内部排序(五)快速排序(上)- 概述与选择枢轴

快速排序终于要来了,快速排序也是交换排序的一种,其实讲快速排序前应该先讲讲冒泡排序,因为快速排序是对冒泡排序的一种改进,那就先来用最快速度复习一下冒泡排序:

冒泡排序:假设要对待排序了做升序排序,那么首先从待排序列第一个元素开始,和第二个元素作比较,如果第一个元素大于第二个元素,就把它们的位置交换,接着再对序列第二个元素和第三个元素作比较,如果第二个元素比第三个元素大,就交换位置,一直重复直到长度为N的序列的第N-1个元素和第N个元素做完比较后,当前序列中最大的元素就会被放到序列的最后一个位置,这就完成了一趟的冒泡排序。

第二趟冒泡排序就是从头开始对N-1个元素继续做两两之间的交换,直到完成第N-2个元素和第N-1个元素的交换就完成了第二趟排序,依此类推下去直到最后剩下一个元素后完成。完整实现代码可以看我代码云:

https://gitee.com/justinzeng/codes/qovyh7ga1bkfi30lrptem42

好的回到快速排序,快速排序的概述,和归并排序也有点类似,都采用了分而治之的思想,也就是用递归解决问题。具体举个例子来看看快速排序的递归思想是怎样的:

假设待排序列为:44、12、59、36、62、43、94、7、35、52、85。

  1. 首先从待排序列中选择一个元素作为枢轴(也可以叫中枢或者主元),例如这里选择43,和序列中最有一个元素位置互换。然后设置两个指针分别指向待排序列的头和尾。

  1. 从Low指针开始往右遍历,如果遇到比枢轴大的元素,Low指针就停止,指向遇到的第一个比枢轴大的元素的下标。然后High指针开始往左遍历,如果遇到比枢轴小的元素,High指针就停止遍历,指向遇到的第一个比枢轴小的元素。
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值