博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速排序理论---不含源码
阅读量:5280 次
发布时间:2019-06-14

本文共 1422 字,大约阅读时间需要 4 分钟。

|   版权声明:本文为博主原创文章,未经博主允许不得转载。

 

  快速排序的基本的思想是选择一个中轴值,然后将待排序列根据中轴值的大小分成两部分,一部分比关键字小,放在关键字的左边,一部分比关键字大,放在关键字的右边;然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序的序列。

  复杂度:快速排序的平均运行时间为θ(nlogn)。

  快速排序原理图:

                     

 

  原理:首先,选择一个序列中的节点作为基准,以此基准的数值作为大小比较,然后设置两个变量i,j记录当前的位置下标,同时赋初值 i = 0,j = n-1; j下标从当前序列的位置向左扫描,与基准值急性比较,越过大于基准值的节点(j--),当遇到小于基准值的节点时,扫描停止,交换i和j位置对应的值。如果j和i交换之后,在将 i下标从当前位置向右扫描,同样与基准值进行比较,越过小于基准值的节点。当遇到大于基准值的节点时,扫描停止,交换i和j位置对应的值。然后在从j的当前位置向左扫描重复上述步骤, 然后,继续扫描,直至 i 与 j 相遇为止。扫描和交换的过程结束。这是 i 左边的记录的关键字值都小于基准值,右边的记录的关键字值都不小于基准值。字面上理解有点模糊,下面通过表格详细的演示一下快速排序的过程。

  设待排序列为:49  38  65  97  76 13  27  49 

  第一步:初始关键字,这里选择第一个数49,作为基准值。i = 0,j = 7

49 38 65 97 76 13 27 49

  第二步:49 = 49,不需交换位置。 j--, 下一步比较 27 和 49。i = 0, j = 7

49 38 65 97 76 13 27 49

  第三步:27 < 49,左向扫描,交换两个数的位置。 i++, 下一步比较 38 和 49。i=0,j=6

27 38 65 97 76 13 49 49 

  第四步:38 < 49, 右向扫描,小于基准值,不需交换位置。 i++,下一步比较 65 和 49。i=1,j=6

27 38 65 97 76 13 49 49

  第五步:65 > 49, 右向扫描, 大于基准值,交换位置。 j--, 下一步比较 13 和 49。i=2,j=6

27 38 49 97 76 13 65 49

   第六步:13 < 49, 左向扫描,小于基准值,交换位置。i++,下一步比较 97 和 49。i=2,j=5

27 38 13 97 76 49 65 49

  第七步:97 > 49, 右向扫描, 大于基准值, 交换位置。 j--, 下一步比较 49 和 76。i = 3,j = 5

27 38 13 49 76 97 65 49

  第八步:49 < 76,左向扫描, 大于基准值, 位置不需交换。 j--。i = 3,j = 4 

27 38 13 49 76 97 65 49

   第九步:此时 i = j = 3.第一趟排序结束。i=3,j=3

27 38 13 49 76 97 65 49

                                     

  第一趟排序的结果为:27,38,13,49,76,97,65,49。之后的再次进行排序,直到序列有序位置。

 

转载于:https://www.cnblogs.com/geore/p/5894592.html

你可能感兴趣的文章
ie6解决png图片透明问题
查看>>
瞬间的永恒
查看>>
2019-8-5 考试总结
查看>>
JS中实现字符串和数组的相互转化
查看>>
web service和ejb的区别
查看>>
Windows Azure Cloud Service (29) 在Windows Azure发送邮件(下)
查看>>
CS61A Efficiency 笔记
查看>>
微信上传素材返回 '{"errcode":41005,"errmsg":"media data missing"}',php5.6返回
查看>>
div或者p标签单行和多行超出显示省略号
查看>>
Elasticsearch 滚动重启 必读
查看>>
Hadoop基本概念
查看>>
java.util.zip压缩打包文件总结一:压缩文件及文件下面的文件夹
查看>>
浅说 apache setenvif_module模块
查看>>
MySQL--数据插入
查看>>
重新学习python系列(二)? WTF?
查看>>
shell脚本统计文件中单词的个数
查看>>
SPCE061A学习笔记
查看>>
sql 函数
查看>>
hdu 2807 The Shortest Path 矩阵
查看>>
熟悉项目需求,要知道产品增删修改了哪些内容,才会更快更准确的在该项目入手。...
查看>>