C语言快速排序算法

C语言快速排序算法,第1张

概述用快速排序法对一组数据由小到大进行排序,数据分别为 99、45、12、36、69、22、62、 796、4、696。 实现过程: (1)自定义一个函数 qusort(),实现快速排序。 (2) main() 函数为程序的入口函数 用快速排序法对一组数据由小到大进行排序,数据分别为 99、45、12、36、69、22、62、 796、4、696。
实现过程:(1)自定义一个函数 qusort(),实现快速排序。

(2) main() 函数为程序的入口函数。程序代码如下:
#include <stdio.h>int qusort(int s[],int start,int end)    //自定义函数 qusort(){    int i,j;    //定义变量为基本整型    i=start;    //将每组首个元素赋给i    j = end;    //将每组末尾元素赋给j    s[0]=s[start];    //设置基准值    while(i<j)    {        while(i<j&&s[0]<s[j])        j--;    //位置左移        if(i<j)        {            s[i]=s[j];    //将s[j]放到s[i]的位置上            i++;    //位置右移        }        while(i<j&&s[i]<=s[0])            i++;    //位置左移        if(i<j)        {            s[j]=s[i];    //将大于基准值的s[j]放到s[i]位置            j--;    //位置左移        }    }    s[i]=s[0];    //将基准值放入指定位置    if (start<i)        qusort(s,start,j-1);    //对分割出的部分递归调用qusort()函数    if (i<end)        qusort(s,j+1,end);    return 0;}int main(){    int a[11],i;    //定义数组及变量为基本整型    printf("请输入10个数:\n");    for(i=1;i<=10;i++)        scanf("%d",&a[i]);    //从键盘中输入10个要进行排序的数    qusort(a,1,10);    //调用qusort()函数进行排序    printf("排序后的顺序是:\n");    for(i=1;i<=10;i++)        printf("%5d",a[i]);    //输出排好序的数组    printf("\n");    return 0;}
运行结果:

请输入10个数:
99 45 12 36 69 22 62 796 4 696
排序后的顺序是:
    4   12   22   36   45   62   69   99  696  796

技术要点:快速排序是冒泡排序的一种改进,主要的算法思想是在待排序的 n 个数据中取第一个数据作为基准值,将所有记录分为 3 组,使第一组中各数据值均小于或等于基准值,第二组做基准值的数琚,第三组中各数据值均大于或等于基准值。这便实现了第一趟分割,然后再对第二组和第兰组分别重复上述方法,依次类推,直到每组中只有一个记录为止。
总结

以上是内存溢出为你收集整理的C语言快速排序算法全部内容,希望文章能够帮你解决C语言快速排序算法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1235255.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存