快排

作者: 萌妈码码 | 来源:发表于2018-07-24 10:06 被阅读0次

昨天晚上睡觉前兴起准备十分钟写出快排,结果纠结了两个小时愣是没有搞出来,很郁闷地睡觉去。今天地铁上跟LG又重新缕了一遍思路,到了公司十分钟搞定。

三个关键点:

1. 基准点的选取对过程的影响。如果选取最左边的点作为基准点,那么需要先从右边开始比较;相反,如果选取最右边的点为基准点,则需要从左边开始比较。这样做可以避免当整个数列本身就是已排序状态的时候基准点被换到错误的位置上去。

2. 主要逻辑循环部分的出口是i==j。在比较过程中,一定要控制i<j,否则很容易OutOfIndex...

3. 主循环的作用是要找到基准点的正确位置。因此,当i=j之后,一点要将基准点换到这个位置上;整个数列也因此被分成两个小的数列。进而递归,分而治之。

快速排序

将算法除递归之外的部分抽取出来,可以得到一个partition方法来返回基准点的正确位置。借用同样的思路(PARTITION+递归),可以解决选择问题,即从数列中找到第K小或者第K大的问题。

选择第K小问题

注意点是:kthMin方法中的下标计算。

相关文章

  • 快排

    快排代码

  • 快排

  • 快排

    昨天晚上睡觉前兴起准备十分钟写出快排,结果纠结了两个小时愣是没有搞出来,很郁闷地睡觉去。今天地铁上跟LG又重新缕了...

  • 快排

    基本思想: 先从数列中取出一个数作为基准数。 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的...

  • 快排

  • 快排

    python实现 java实现:

  • 快排

    快速排序: 基本思想:1、先从数列中取出一个数作为基数。2、分区,将比此基数大的数放到它右边,小的数放到它左边。3...

  • 快排

    package sort;import java.util.Arrays;public class Quickso...

  • 快排

  • 快排

    一、(1)假如有一个数组 [8,10,2,3,6,1,5] ,我们拿出5作为参考,将小于5的数放到它的左边,大于5...

网友评论

      本文标题:快排

      本文链接:https://www.haomeiwen.com/subject/obcemftx.html