今天刚好同事问了下,为什么以前背的快排一定要从右边开始?刚好也顺便给大家做个总结。

其实快排没有一定要重右边开始,只是看你基数的位置,如果你基数选的是最左边的。你一定要确保,你交换基础的时候,保证那个数要小于基数。但是你重右边开始,就无法保证了。

比如你有

2 1 4 9           首先左边left 会 跑到 4这里,这样9也会到4.然后进行交换。显然就出错了。 肯定不可能 4  1 2 9 所以为什么不能左边开始。

当你从右边开始的时候,就一定是可以保证    那个数一定是小于等于基数的, 比如 上面就会找到  1  就会 1 2 4 9 这样2 归位。

或者说最不济的情况, 找不到小于基数的 。 比如  2  3  4 9  。 右边开始,这样也会定位到2的本身, 顶多这次交换是 2 和2 的交换。 2 3 4 9  。

明白了吗 ?  主要就是从左边开始,你不能保证你最后交换的那个数,是小于等于左边的。

如果你硬是要从左边开始,那么你的基数就选右边的把 。

快排为什么一定要从右边开始?相关推荐

  1. 快速排序(快排)--->注释超详细

    基本思想:         1.先选取一个基准值(一般选取数组第一个元素).         2.以第一步选取的基准值为标准,然后从最后一个数值开始一步步向前走将数字与基准值进行比较,如果该值大于基准 ...

  2. java 快排_八大排序-快速排序(搞定面试之手写快排)

    概要 快速排序由C. A. R. Hoare在1960年提出,是八大排序算法中最常用的经典排序算法之一.其广泛应用的主要原因是高效,核心算法思想是分而治之.快速排序经常会被作为面试题进行考察,通常的考 ...

  3. python实现快排算法(quicksort)

    python实现快排算法(quicksort) 快速排序是对冒泡排序的一种改进.它的基本思想是:通过一次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后 ...

  4. 快排--java实现

    快速排序思想 快速排序的思想,寻找一个轴位,比这个轴小的放到左边,比这个轴大的放到右边,然后分别再对两边进行如此的方法即可得到排序的数组. 这样说起来晦涩难懂,我们举个例子来实现. 例如数组:{13, ...

  5. 使用Java泛型实现快速排序(快排,Quicksort)

    原文:https://my.oschina.net/u/1382972/blog/169747 还可以参考:http://blog.csdn.net/stushan/article/details/5 ...

  6. BFPRT 算法 (TOP-K 问题)——本质就是在利用分组中位数的中位数来找到较快排更合适的pivot元素...

    先说快排最坏情况下的时间复杂度为n^2. 正常情况: 最坏的情况下,待排序的记录序列正序或逆序,每次划分只能得到一个比上一次划分少一个记录的子序列,(另一个子序列为空).此时,必须经过n-1次递归调用 ...

  7. 先贴上代码:Random快排,快排的非递归实现

    设要排序的数组是A[0]--A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为主元,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序.值得注意的是, ...

  8. 带哨兵的冒泡排序_冒泡排序的优化以及快排过程及优化

    冒泡排序的优化: 1.加入哨兵.2.记住每一次交换的最后位置,该位置以后的为有序,不需要改变. 1.快速排序的基本思想: 快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关 ...

  9. PAT甲级1101 Quick Sort:[C++题解]DP、快速排序划分个数、快排

    文章目录 题目分析 题目来源 题目分析 来源:acwing 题意重述:快排的原理,给定一个序列,请判断其中几个数可以作为快速排序划分步骤的分界点. 分界点充分必要条件是:左边的数都比它小,右边的数都比 ...

最新文章

  1. OKR不会颠覆KPI,而是融合应用!
  2. 网络不通 从“本地连接”中找问题
  3. linux 终端 含义,ubuntu终端中@前后的字符串含义及修改-布布扣-bubuko.com
  4. ASP.NET开发经验积累
  5. threadlocal get为空_面试常见知识点:ThreadLocal
  6. 探求数据仓库关键环节ETL的本质
  7. 01《构建之法》阅读笔记01
  8. web开发:css基础
  9. 教你几招提高自媒体文章原创度
  10. 发力大数据营销 神马搜索获年度最佳移动广告平台奖
  11. win7需要计算机管理员权限,解决方案:Win7安装软件需要管理员权限解决方案
  12. IE首页被篡改(手动修复)
  13. 现代教育技术计算机网络试题及答案,现代教育技术试题及答案解析
  14. MODLE CODE
  15. 「学习笔记」黑马面面布局开发
  16. 杭州西湖.湖中音乐喷泉[录象]
  17. 经营网站需要办理哪些牌照资质
  18. Python100行-贪吃蛇小游戏
  19. 关于 SQL Server 登录问题(错误 233和18456)的解决方法
  20. 内联样式表 和 内部样式表

热门文章

  1. html怎么给图片加密,实现图片加密
  2. XAG聚合细节举例说明
  3. php 用户名长度,Discuz! X2修改注册用户名长度限制解决方案
  4. 基于vue商品图片轮播和放大镜的方案
  5. 三中新教学楼信息系统集成方案
  6. 基于KG嵌入和卷积-LSTM网络的药物-药物相互作用预测——方法细述
  7. Volo - Rust gRPC 框架入门
  8. 在贴吧怎样引流宝妈粉?怎么从百度贴吧引流宝妈粉?
  9. python地铁车票_Python分析3034个地铁站,发现中国地铁名字的秘密。
  10. VB快速注销/重启/关闭计算机