快速排序

一、算法原理

每次排序时选取一个基准,将小于基准的数全部放到基准点的左边,将大于或等于基准的数全部放到基准的右边。

完成后,得到了两个 整体 上有序的子数组,再递归继续,直至所有元素完成排序。

算法模拟 假设对 6 , 1 , 2 , 7 , 9 , 3 , 4 , 5 , 10 , 8 这 10 个数进行排序:

本次模拟的基准是以数组的第一个元素为基准的。

从后向前扫描, i 去向右找第一个大于 基准 6 (这个 6 是选择的第一元素,代码中我们将选择中间位置的元素,道理都是一样的) 的数字, j 向左查找第一个小于基准 6 数字:

alt

找到 7 和 5 ,交换 7 和 5

alt

继续前进,找到 9 和 4 ,然后交换

alt

i>= j ,交换 6 和 3

alt

交换之后: 3 , 1 , 2 , 5 , 4 , 6 , 9 , 7 , 10 , 8 , 一趟排序结束。

以基准值 6 划分的两堆数据,左手边都比 6 小,右手边都比 6 大, 6 在中间,然后再用同样的办法递归处理左右两边即可,此时, 6 就不参与了。

二、实现代码 alt

全部评论

相关推荐

不愿透露姓名的神秘牛友
10-29 21:14
疯犬丨哈士奇:喜欢你的人会主动表白,对你有想法的人会很主动,所以要你的公司不会吊着你所以懂了吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务