排序?原来这叫快排啊!

初闻快排

快排是排起来速度快?还是写起来很简单?

快排的时间复杂度为LogN,时间并不是常数级的,所以它并不是最快的。为什么叫快排,我估计在排序算法刚出来的时候,一般像冒泡、插入这些,都是N的平方级。因此所以起名为快排 。

快排写起来并不简单,相对于基础算法,比较复杂。那复杂到哪里了?

快排使用的是分治思想:先分再排,排好一轮再分。一般使用递归来进行实现
在这里插入图片描述
分治思想,将一个大块分成小块,再对这些小块进行治理。
而快排,就像军训的时候,排成一排。我们想让它按从小到大排,我们选取了一个人,比他高的,往右站;比他矮的,往左站。现在就变成了三个队伍,一个是左边队伍,一个是作为基准的他,一个是右边队伍,这个基准就不用管了,放到中间。而两边继续选取基准,再按基准排列。到了每队只剩下一个人的时候,说明已经排完了队。

代码

在这里插入图片描述在这里插入图片描述这是代码的实现,但要有注意事项:

1.大while()循环中,一定要left!=rgiht。或者是left<right
2.left和right找数值是有顺序的,如果返回的是left,一定要先

在这里插入图片描述在这里插入图片描述
不然,值会被覆盖。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值