//快速排序
#include<stdio.h>
int temp;
int Partation(int* a, int low, int high) {
int pivot = a[high];
int i, j;
i = low - 1;
for (j = low;j <high;j++) {//因为pivot取的是a[high]的值所以可不参与比较
if (a[j] < pivot) {
i++;
temp = a[i];
a[i] = a[j];
a[j] = temp;//将小于基准值的数放在左边
}
}
temp = a[i + 1];
a[i + 1] = pivot;
a[high] = temp;//将基准值放在正确的位置,左边小于他,右边大于它
return i + 1;
}
void QuickSort(int *a,int low,int high) {
if (low >= high) {//结束条件放最前面
return;
}
else {
int part = Partation(a, low, high);
QuickSort(a, low, part - 1);
QuickSort(a, part+1,high);
}
}
int main(void) {
int a[] = {8,3,4,2,5,6,6,78,9};
int low = 0;
int high = sizeof(a) / sizeof(a[0])-1;
QuickSort(a, low, high);
//快速排序后的数组
int i;
for (i = low;i <= high;i++) {
printf("%d\n", a[i]);
}
return 0;
}