C语言 快速排序
#include<stdio.h>
int main() {
void QuickSort(int a[],int low,int high); //声明QuickSort函数
int a[7]={1,5,6,2,3,9,4};
QuickSort(a,0,6); //调用QuickSort函数
for(int i=0;i<=6;i++) //打印排序后的数组
printf("%4d ",a[i]);
return 0;
}
//快速排序
void QuickSort(int a[],int low,int high){
int i=low,j=high,k=a[i]; //k为枢轴 (默认为最左边的)
while(i<j){
while(i<j&&a[j]>=k){ //从右往左找到第一个比枢轴小的元素
j--;
}
if(i<j)
a[i++]=a[j];
while(i<j&&a[i]<=k){ //从左向右找到第一个比枢轴大的元素
i++;
}
if(i<j)
a[j--]=a[i];
a[i]=k; //此轮枢轴元素放到的位置
QuickSort(a,low,i-1); //递归左边
QuickSort(a,i+1,high); //递归右边
}
}