개인공부/Algorithm(C, C++)
QuickSort(퀵정렬), C, C++
저세상판단
2020. 1. 14. 17:41
반응형
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]);
}
}
반응형