C语言快速排列---分治法(含动图)

一、基本思路:

分治法是随机选取一个中间变量x,将数组分成两个部分;其中将小于x的元素放在x的左侧,大于x的放在x的右侧;在对左半部分和右半部分 分别各分成两个部分,进行相同操作...最后所有左侧的元素都大于右侧,也就是成功将数组从小到大的排序。

二、使用原因

因为快速排列的分治法,采取对半的操作,避免了很多重复操作,对比多层循环的冒泡、选择等排序方法,更加迅速,实现了最快的编译速度。

三、基本步骤

  1.找到随机x(一般可选取中间值,选择>>运算符号可以再度提高运行速率,因为相比于除法,直接在二进制上操作,会快很多);

  2.将所有“小数”放在左侧,“大数放在右侧”

例如:现有数组:22,84,4,33,47,31,38,37

         选33为中间值x,则一轮操作后:22,31,4,33|47,38,84,37

         这样将小数放在左侧,大数放在右侧

  3.在对左右两组进行取半,重复操作,直到不可再分,成功排序(将“|”两侧的小组进行操作)

例: 22 4 |31 33|37 38 |84 47

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悲伤玉米芹菜粥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值