https://www.acmicpc.net/problem/2751
2751번: 수 정렬하기 2
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
#include <iostream>
#include <algorithm>
using namespace std;
void quick_sort(int* data, int start, int end) {
if (start >= end) {
return;
}
int pivot = start;
int i = pivot + 1;
int j = end;
int temp;
while (i <= j) {
while (i <= end && data[i] <= data[pivot]) {
i++;
}
while (j > start && data[j] >= data[pivot]) {
j--;
}
if (i > j) {
temp = data[j];
data[j] = data[pivot];
data[pivot] = temp;
}
else {
temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
// 분할 계산
quick_sort(data, start, j - 1);
quick_sort(data, j + 1, end);
}
int main()
{
int N;
cin >> N;
int *arr = new int[N];
for (int i = 0; i < N; i++)
{
cin >> arr[i];
}
//quick_sort(arr, 0, N - 1);
sort(arr, arr + N);
for (int i = 0; i < N; i++)
{
printf("%d\n", arr[i]);
}
delete[] arr;
return 0;
}
2751번 문제를 풀며 알게 된 것들
- cin, cout 보다 printf, scanf가 빠르다.
- stl 내장함수인 sort함수가 직접 구현한 정렬 알고리즘보다 효율적이다.
'프로그래밍 공부 > 백준 (C++)' 카테고리의 다른 글
[C++/백준 11650번] 좌표 정렬하기 (0) | 2023.08.07 |
---|---|
[C++/백준 10989번] 수 정렬하기 3 (카운팅 정렬) (0) | 2023.08.07 |
[C++/백준 1018번] 체스판 다시 칠하기 (0) | 2023.08.04 |
[C++/백준 19532번] 수학은 비대면 강의입니다. (0) | 2023.08.03 |
[C++/백준 2231번] 분해합 (0) | 2023.08.03 |