Quicksort
Posted zpchya
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Quicksort相关的知识,希望对你有一定的参考价值。
最近在看快速排序的内容,感觉自己理解的不太好,所以找英文阅读资料的时候,干脆弄一篇关于快速排序的博客之类的,http://www.algolist.net/Algorithms/Sorting/Quicksort。大家也可以参考一下,关于快速排序的核心划分区域做了比较详细的说明。
快速排序用到的是分治(divid-and-conquer)的思想,分治思想一般由递归这种编程技巧实现,步骤如下:
1)选取枢轴值。我们选取中间元素作为枢轴值,但是它可以为任何元素,既可以是待排序数据中取,也可以不是待排序数据元素。
其实关键值在于一个中间,选取待排序数据的中间元素,这样划分之后能使用两部分更均匀,效率更高。但是同时因为中间元素未知,所以为了选取更好的枢轴值,有各种方法,这里可以说一下常用的三值取中法,就是去首元素、尾元素和中间下标元素,取三者中的中间值。
2)划分。重新排序数组,使得小于等于枢轴值的数据元素都在左边,大于等于枢轴值的数据元素都在右边。
3)快速排序划分后的两部分。使用快速排序算法递归作用于左右两边分区。
最核心的部分就是区域划分了,这个我会在两种时间复杂度为O(nlogn)的排序算法中介绍两种划分区域的方法。
以上是关于Quicksort的主要内容,如果未能解决你的问题,请参考以下文章