最简单的快速排序算法的C语言实现

这个快速排序算法可能不是效率最高的,但它是最简单的算法之一。
快速排序算法是由C.A.R.Hoare于1962年发明的。对于一个给定的数组,从中选择一个元素,以该元素为界将其与元素划分为两个子集,一个子集中的元素都小于该元素,另一个子集中的元素都大于等于该元素。对这两个子集递归执行这一过程,当某个子集中的元素小于2时,这个子集就不需要再次排序,终止递归。
该算法的C语言实现代码如下:

void qsortlist(int v[],int left,int right){
    int i,last;
    void swap(int v[],int i,int j);
    if(left>=right)
        return;
    swap(v,left,(left+right)/2);//选定中间元素作为划分两个子集的元素,并将其与替换至数组第一个位置
    last=left;//利用last记录两个子集的中间元素的位置,last初始化为数组第一个元素的位置
    for(i=left+1;i<=right;i++)//遍历数组每个元素与第一个元素比较
        if(v[i] <v[left]){//如果该数组元素小于第一个元素,则将其与last后的元素交换,这样可以保证last之前的元素都小于第一个元素
            swap(v,++last,i);//
    swap(v,left,last);//将关键元素交换至两个子集的中间,并对两个子集进行递归调用排序
    qsortlist(v,left,last-1);
    qsortlist(v,last+1,right);
}

void swap(int v[],int i,int j){//交换数组元素值函数
    int temp;
    temp=v[i];
    v[i]=v[j];
    v[j]=temp;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值