#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程序设计语言》
本文介绍了如何使用C语言实现快速排序算法。通过定义`swap`函数交换数组元素,然后在`qsort`函数中利用递归进行数组划分,最终在`main`函数中展示排序结果。快速排序是一种高效的排序算法,平均时间复杂度为O(n log n)。
3万+

被折叠的 条评论
为什么被折叠?



