原理如下:
代码如下:
#include <stdio.h>
int Partition(int a[],int low,int high){
int pivot=a[low]; //将第一个元素赋值给枢轴元素
while(low<high){ //当low等于high时候结束循环
while(low<high && a[high]>=pivot){ //low<high是为了防止low等于high时下标继续移动
high--;
}
a[low]=a[high]; //将下标high对应的元素赋值给low,此时high空缺
while(low<high && a[low]<pivot){
low++;
}
a[high]=a[low]; //将下标low对应的元素赋值给high,此时low空缺
}
a[low]=pivot;
return low;
}
void QuickSort(int a[],int low,int high){
if(low<high){ //当low等于high时,递归跳出
int pivotpos=Partition(a,low,high); //划分
QuickSort(a,low,pivotpos-1); //依次对两个子表进行递归排序
QuickSort(a,pivotpos+1,high);
}
}
int main()
{
int a[]={49,38,65,97,76,13,27,49};
QuickSort(a,0,7);
for(int i=0;i<8;i++){
printf("%3d",a[i]);
}
}