2018-09-30快速排序算法

将一个数组中的数据进行从小到大的排序


快速排序

基本思想:通过 一次排序 将数组分割成相互独立的左右两部分,左边部分的所有数据都比右边部分所有的数据要小,然后左右两边分别递归执行此方法,得到有序序列。

1、找基准数(一般是数组的第一个元素)

2、定义两个变量

    (1)left,要排序数组的起始下标,i

    (2)right,要排序数组的终点下标,j

3、我们的目的是使左边的数都小于基准数,右边的数都大于基准数

        (1)从右边开始向左找(如果基准数在右边就先从左边开始),依次与基准数作比较,如果大于基准数,则 j--,遇到小于基准数的则停下;

         (2)接下来从左边开始向右找,如果小于基准数,则 i++,遇到大于基准数的则停下来;

         此时,array[ j ]是 右边小于基准数的值,array[ i ]是左边大于基准数的值

         (3)然后交换array[ i ]和array[ j ],此时完成第一次交换。

        依次执行上述3个操作,直到 i == j(碰头)

        此时完成了之前所说的“一次排序”,将数组分成了左右两个相互独立的部分

        然后,分别对左右两部分递归执行此方法 ,即可得到有序数列。

参考资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • quicksort可以说是应用最广泛的排序算法之一,它的基本思想是分治法,选择一个pivot(中轴点),将小于pi...
    黎景阳阅读 478评论 0 1
  • 原文地址 快速排序 原理 快速排序是C.R.A.Hoare提出的一种交换排序。它采用分治的策略,所以也称其为分治排...
    gyl_coder阅读 916评论 0 0
  • “我倒觉得这种路走着很舒服。” “怎么会?”三儿明显很诧异,满脸的不信。 “你看啊,这种路吧,一步娘炮,两步扯蛋。...
    大头和他的五对负重轮阅读 168评论 0 0
  • 上一篇:妹妹来陪我 - 简书 踏上归乡的火车时,我的心就安定了。 很多人在火车上睡不踏实,我不一样。我在火车上睡得...
    一间房阅读 267评论 0 0
  • 有时 希望自己是一个瞎子'那样就看不到世态的昏暗,有时 希望自己是聋子'那样就听不到小人背后的语言,有时 希望自己...
    魔星阅读 147评论 0 0