请选择 进入手机版 | 继续访问电脑版

快速排序 + C语言实现

[复制链接]
唐少琼 发表于 2021-1-3 12:03:32 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
快速排序
根本思想:从待排序元素中选取一个枢轴元素,将所有小于它的元素置于它前方,所有大于它的元素置于厥后方,从而找到枢轴元素在有序数列中的位置,再分别对左右双方未排序数枚举行同样的操纵。
过程图示
1.将low位置的元素存至pivot中

2.high指针前移,找到小于即是pivot的元素

3.将该元素放至low位

4.换low指针,前移,找到大于pivot的元素

5.将它放到high位

6.换high指针前移,重复之前过程,后续不再赘述

注:图中有空位是为明白方便,实际代码中无需将移动元素的原位置置空。
最终low,high指针将会相遇,此时low(high)的位置便是pivot在有序数列中的位置,将A[low] = pivot 即可。
实现
[code]int Partition(int A[],int low,int high){    int pivot = A[low];        //pivot枢轴元素    while (low < high)    {        while (low < high && A[high] >= pivot) --high;        A[low] = A[high];//从high开始往前寻找到一个比pivot小的元素,放到low的位置        while (low < high && A[low]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )