백준 2751번

2020. 9. 22. 23:40coding study

www.acmicpc.net/problem/2751

 

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