快速排序利用了分治和递归的思想,通过与基准值比较交换左右位置,一直递归,得到有序序列,代码如下:
#include <stdio.h>
void quicksort(int a[], int left,int right)
{
int i =left;
int j = right;
int pivot =a[i];
if(left >= right){
return;
}
while(i<j){
while(a[j]>=pivot && i<j){
j--;
}
a[i] = a[j];
while(a[i]<=pivot && i<j){
i++;
}
a[j] =a[i];
}
a[i] = pivot;
quicksort(a, left, i-1);
quicksort(a, i+1, right);
}
int main()
{
int a[12] = {7,11,13,6,8,16,17,5,4,3,2,1};
quicksort(a,0,11);
printf("\n");
printf("排序后的顺序是:\n");
for(int i=0;i<12;i++){
printf("%5d",a[i]);
}
return 0;
}