반응형
Pivot을 기준으로 Pivot보다 작은 수는 왼쪽에, Pivot보다 큰 수는 오른쪽에 배치하여 정렬하는 기법이다.
이름처럼 매우 빠른 속도로 정렬한다.
#include
#include
#define max 10
void QuickSort(int*, int, int);
int Partition(int*, int, int);
void QuickSort(int* a, int start, int end){
int index;
if(start < end){
index = Partition(a, start, end);
QuickSort(a, start, index-1);
QuickSort(a, index+1, end);
}
else{
return ;
}
}
int Partition(int* a, int start, int end){
//
int pivot = a[end];
int i;
int index = start;
int temp;
for(i = start; i < end; i++){
if(a[i] <= pivot){
temp = a[i];
a[i] = a[index];
a[index] = temp;
index++;
}
}
temp = a[end];
a[end] = a[index];
a[index] = temp;
return index;
}
int main()
{
int a[max] = {40, 30, 100, 60, 80, 70, 90,10, 20, 50};
printf("before sort : ");
for(int i = 0; i < max; i++){
printf("%d ", a[i]);
}
printf("\n");
//index is 0~9, so last data is (max-1)
QuickSort(a, 0, max-1);
printf("after sort : ");
for(int i = 0; i < max; i++){
printf("%d ", a[i]);
}
}
반응형
'개인공부 > Algorithm(C, C++)' 카테고리의 다른 글
Programmers 체육복문제 (Greedy) (0) | 2020.09.24 |
---|---|
[C, C++] 한 줄 입력받기, 원하는 자릿수만큼 입력받기 (0) | 2020.02.18 |
MergeSort(합병정렬), C, C++ (0) | 2020.01.14 |
SelectionSort(선택정렬), C, C++ (0) | 2020.01.13 |
BubbleSort(버블정렬), C, C++ (0) | 2020.01.13 |