码迷,mamicode.com
首页 > 其他好文 > 详细

Quicksort

时间:2019-04-27 10:21:04      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:详细   www   实现   常用   步骤   排序   做了   编程技巧   阅读   

最近在看快速排序的内容,感觉自己理解的不太好,所以找英文阅读资料的时候,干脆弄一篇关于快速排序的博客之类的,http://www.algolist.net/Algorithms/Sorting/Quicksort。大家也可以参考一下,关于快速排序的核心划分区域做了比较详细的说明。

快速排序用到的是分治(divid-and-conquer)的思想,分治思想一般由递归这种编程技巧实现,步骤如下:

1)选取枢轴值。我们选取中间元素作为枢轴值,但是它可以为任何元素,既可以是待排序数据中取,也可以不是待排序数据元素。

其实关键值在于一个中间,选取待排序数据的中间元素,这样划分之后能使用两部分更均匀,效率更高。但是同时因为中间元素未知,所以为了选取更好的枢轴值,有各种方法,这里可以说一下常用的三值取中法,就是去首元素、尾元素和中间下标元素,取三者中的中间值。

2)划分。重新排序数组,使得小于等于枢轴值的数据元素都在左边,大于等于枢轴值的数据元素都在右边。

3)快速排序划分后的两部分。使用快速排序算法递归作用于左右两边分区。

最核心的部分就是区域划分了,这个我会在两种时间复杂度为O(nlogn)的排序算法中介绍两种划分区域的方法。

 

Quicksort

标签:详细   www   实现   常用   步骤   排序   做了   编程技巧   阅读   

原文地址:https://www.cnblogs.com/zpchya/p/10777525.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!