#include<stdio.h>
///交换函数
void swap(int v[],int i,int j){
int temp=v[i];
v[i]=v[j];
v[j]=temp;
}
/// 快速排序函数-递归
void qsort(int v[],int left,int right){
int i,last;
if(left>=right){ ///若数组包含的元素数少于两个,不执行任何操作
return ;
}
swap(v,left,(left+right)/2); ///将中间值作为划分子集的元素(枢轴),移动到v[0],也可以不加直接将第一个元素作为枢轴
last=left;
for (i=left+1;i<=right;i++)
{
if(v[i]<v[left]){
swap(v,++last,i);
}
}
swap(v,left,last); ///将枢轴移动到中间位置
qsort(v,left,last-1); ///对枢轴左右,递归进行划分
qsort(v,last+1,right);
}
int main(){
int i,s[]={6,2,7,3,1};
qsort(s,0,4);
for(i=0;i<5;i++){
printf("%d ",s[i]);
}
return 0;
}
参考:《C程序设计语言》