2020. 9. 22. 23:40ㆍcoding study
2751번: 수 정렬하기 2
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
[문제]
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성
[입력]
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않음.
[출력]
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
#include <iostream>
using namespace std;
//퀵정렬
int n, quick[10000001];
// quick 함수
void quickSort(int i, int j)
{
if (i >= j) return;
int pivot = quick[(i + j) / 2];
int left = i;
int right = j;
//반복_left가 right보다 클때까지 반복하며 pivot만나면 stop
while (left <= right)
{
while (quick[left] < pivot) left++;
while (quick[right] > pivot) right--;
if (left <= right)
{
swap(quick[left], quick[right]);
left++; right--;
}
}
quickSort(i, right);
quickSort(left, j);
}
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
cin >> quick[i];
quickSort(0, n - 1); //quick함수 호출하기
for (int j = 0; j < n; j++)
cout<< quick[j]<<endl;
system("pause");
return 0;
}
'coding study' 카테고리의 다른 글
백준 2309번 (0) | 2020.10.06 |
---|---|
백준 10814번 (0) | 2020.09.23 |
백준 2750번 (0) | 2020.09.22 |
C++ . 2진수 --> 10진수로 바꾸기 (0) | 2020.03.10 |
C++ . 최대값 최소값 구하기 (0) | 2020.03.09 |