1. 퀵정렬
- 기준점을 정해서 큰값과 작은 값을 차례로 찾고 옮기면서 수행하는 정렬
- N*LogN 속도로 다른 정렬과 비교해서 우월한 성능
// ConsoleApplication9.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다.
//
#include <iostream>
#include <queue>
using namespace std;
void quickSort(int* data, int start, int end)
{
if (start >= end) // 원소가 한개인 경우
{
return;
}
int key = start;
int i = start + 1;
int j = end;
int temp;
while (i <= j) // 엇갈릴 때까지만 반복
{
while (data[i] <= data[key] && i <= end) { // 피벗보다 큰 값을 만날 때까지 이동
i++;
}
while (data[j] >= data[key] && j > start) // 피벗보다 작은 값을 만날 때까지 이동
{
j--;
}
if (i > j) { // 엇갈렸다면 key과 작은 값을 바꿈
temp = data[j];
data[j] = data[key];
data[key] = temp;
}
else { // 엇갈리지 않았다면 큰값과 작은 값을 바꿈
temp = data[j];
data[j] = data[i];
data[i] = temp;
}
}
quickSort(data, start, j - 1);
quickSort(data, j + 1, end);
}
int main()
{
int number = 10;
int data[10] = { 1, 10, 9, 5, 3, 2, 7, 8, 4, 6 };
quickSort(data, 0, number - 1);
for (int idx = 0; idx < number; idx++)
{
cout << " " << data[idx];
}
return 0;
}
'서버개발자 역량 > 알고리즘' 카테고리의 다른 글
알고리즘 ] 백준 9012번 - 괄호 (0) | 2019.12.09 |
---|---|
알고리즘 ] c++ 소수점자리 표현 (0) | 2019.11.22 |
알고리즘 ] 5. DP (0) | 2019.09.27 |
알고리즘 ] 2. 선택 정렬, 버블 정렬, 삽입 정렬 (0) | 2019.09.09 |
알고리즘 ] 1. C++ STL 파악하기 (0) | 2019.09.06 |