Programming/Programmers 알고리즘 문제
quicksort
이미안녕
2019. 10. 24. 11:07
#include <stdio.h>
void swap(int data[], int a, int b) {
int temp = 0;
temp = data[a];
data[a] = data[b];
data[b] = temp;
}
int partition(int data[], int left, int right) {
int pivot = data[left];
int low = left +1;
int high = right;
while (low <= high)
{
while (low <= right && pivot >= data[low])
low++;
while (high >= (left+1) && pivot <= data[high])
high--;
if (low <= high) {
swap(data, low, high);
}
}
swap(data, left, high);
return high;
}
void quick_sort(int data[], int left, int right) {
int pivot = 0;
if (left >= right) {
return;
}
pivot = partition(data, left, right);
quick_sort(data, left, pivot -1);
quick_sort(data, pivot +1, right);
}
int main(void) {
int data[10] = {0,2,4,6,8,1,3,5,7,9};
int n = 10;
int i = 0;
quick_sort(data, 0, n-1);
for (i = 0; i < n; i++) {
printf("%d ", data[i]);
}
printf("\n");
return 0;
}