zoukankan      html  css  js  c++  java
  • 快速排序(Quicksort)

      快速排序:是对冒泡排序的一种改进。

      什么是冒泡排序:简单一点就是冒气泡。极值数据会到达数据的顶端。

      实现步骤:建立一个数据排列标准,从大到小还是从小到大。

          【从大到小排列】:从第一个数据开始遍历,比较相邻两个数据的大小,大的放前面,小的放后面。遍历一遍以后最小的就到了最后面了。

                    然后继续,遍历第二遍,第二小的就到了倒数第2个了。

                    以此类推。。。。

          【从小到大排列】:从第一个数据开始,比较相邻两个数据的大小,小的放前面,大的放后面。依此。

      N个元素排列,需要遍历N-1次。也就是数组最大的下标。每一次比较依次递减。为N-1 到 0.不难算出对于N个元素的冒泡排序运算次数。

      

      快速排序的原理:将数据无穷按整体大小细分。

      对于N个元素来说。

      举个例子:100个人随机的在操场上玩耍,老师说:咱们来排个队,从矮到高,听我指挥。你们先排成一列,不管高矮。

      好,拍成一列了。老师说:比第一个人高的全部占到左边一列。这时排好了。

      然后老师又说:现在大家都看到了吧。你们现在是两列了。现在开始,我说一个标准,你们按照标准来。

      即:比一列的第一个人矮的重新在左边开一列,其他人不动。相同身高的,到新的一列去(或者不动),直到最后大家排成一排。

      

      从一列变为一行,如果单纯采用冒泡排序的话,付出的空间代价是什么?需要用到一个Temp空间来作为数据交换。但是对于快速排序来说,需要的空间显然不是申请一个变量就能解决的问题。由于快速排序用到了递归的思想,具体的空间需要计算了。

  • 相关阅读:
    lodash源码分析之自减的两种形式
    lodash源码分析之NaN不是NaN
    lodash源码分析之Hash缓存
    lodash源码分析之compact中的遍历
    navigate15安装教程
    jmeter线程组调度器使用
    jmeter 注册选择文件编码格式有问题
    jmete插件下载
    jmeter linux 无gui模式分布式压测
    pycharm原码编辑界面快捷键
  • 原文地址:https://www.cnblogs.com/ply616/p/4430427.html
Copyright © 2011-2022 走看看