快排为什么一定要从右边开始?
今天刚好同事问了下,为什么以前背的快排一定要从右边开始?刚好也顺便给大家做个总结。
其实快排没有一定要重右边开始,只是看你基数的位置,如果你基数选的是最左边的。你一定要确保,你交换基础的时候,保证那个数要小于基数。但是你重右边开始,就无法保证了。
比如你有
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.先选取一个基准值(一般选取数组第一个元素). 2.以第一步选取的基准值为标准,然后从最后一个数值开始一步步向前走将数字与基准值进行比较,如果该值大于基准 ...
- java 快排_八大排序-快速排序(搞定面试之手写快排)
概要 快速排序由C. A. R. Hoare在1960年提出,是八大排序算法中最常用的经典排序算法之一.其广泛应用的主要原因是高效,核心算法思想是分而治之.快速排序经常会被作为面试题进行考察,通常的考 ...
- python实现快排算法(quicksort)
python实现快排算法(quicksort) 快速排序是对冒泡排序的一种改进.它的基本思想是:通过一次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后 ...
- 快排--java实现
快速排序思想 快速排序的思想,寻找一个轴位,比这个轴小的放到左边,比这个轴大的放到右边,然后分别再对两边进行如此的方法即可得到排序的数组. 这样说起来晦涩难懂,我们举个例子来实现. 例如数组:{13, ...
- 使用Java泛型实现快速排序(快排,Quicksort)
原文:https://my.oschina.net/u/1382972/blog/169747 还可以参考:http://blog.csdn.net/stushan/article/details/5 ...
- BFPRT 算法 (TOP-K 问题)——本质就是在利用分组中位数的中位数来找到较快排更合适的pivot元素...
先说快排最坏情况下的时间复杂度为n^2. 正常情况: 最坏的情况下,待排序的记录序列正序或逆序,每次划分只能得到一个比上一次划分少一个记录的子序列,(另一个子序列为空).此时,必须经过n-1次递归调用 ...
- 先贴上代码:Random快排,快排的非递归实现
设要排序的数组是A[0]--A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为主元,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序.值得注意的是, ...
- 带哨兵的冒泡排序_冒泡排序的优化以及快排过程及优化
冒泡排序的优化: 1.加入哨兵.2.记住每一次交换的最后位置,该位置以后的为有序,不需要改变. 1.快速排序的基本思想: 快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关 ...
- PAT甲级1101 Quick Sort:[C++题解]DP、快速排序划分个数、快排
文章目录 题目分析 题目来源 题目分析 来源:acwing 题意重述:快排的原理,给定一个序列,请判断其中几个数可以作为快速排序划分步骤的分界点. 分界点充分必要条件是:左边的数都比它小,右边的数都比 ...
最新文章
- OKR不会颠覆KPI,而是融合应用!
- 网络不通 从“本地连接”中找问题
- linux 终端 含义,ubuntu终端中@前后的字符串含义及修改-布布扣-bubuko.com
- ASP.NET开发经验积累
- threadlocal get为空_面试常见知识点:ThreadLocal
- 探求数据仓库关键环节ETL的本质
- 01《构建之法》阅读笔记01
- web开发:css基础
- 教你几招提高自媒体文章原创度
- 发力大数据营销 神马搜索获年度最佳移动广告平台奖
- win7需要计算机管理员权限,解决方案:Win7安装软件需要管理员权限解决方案
- IE首页被篡改(手动修复)
- 现代教育技术计算机网络试题及答案,现代教育技术试题及答案解析
- MODLE CODE
- 「学习笔记」黑马面面布局开发
- 杭州西湖.湖中音乐喷泉[录象]
- 经营网站需要办理哪些牌照资质
- Python100行-贪吃蛇小游戏
- 关于 SQL Server 登录问题(错误 233和18456)的解决方法
- 内联样式表 和 内部样式表