栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

最简单的快速排序算法的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] //如果该数组元素小于第一个元素,则将其与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;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011484.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号