任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。
hoare版本实现快排的方式为:如果假定key基准值为最左边,然后应该从右边开始向左查看,遇到大于基准值key的right—,反之停在这个位置,再让左手left开始找大于key的元素,遇到之后也停止,最后两者交换,完成这一趟循环之后(left和right两者相遇)key是大于相遇位置的元素的,最后交换着这两个元素,将相遇位置下表赋值给key,再递归
如果说对于有序数组,实际上key基准值再从最左边或者最右边开始,会导致key永远在最左边或者右边,实际上是和冒泡排序差不多,所以这个时候,就是最坏的情况,时间复杂度为O(n2)
第一种随机值法
第二种三数取中方法
挖坑法,先设定key基准值,形成一个坑位(设定一个变量hole表示坑)然后从右开始找到小于key的数值,然后将这个数值放在坑里,然后赋值hole这个位置,表示新的坑,再左边开始找到大于key的位置,再次放在hole里,继而hole更新为这个左边的位置
以上就是本篇文章【快速排序详解——多种实现方式】的全部内容了,欢迎阅览 ! 文章地址:http://ww.kub2b.com/tnews/271.html
栏目首页
相关文章
动态
同类文章
热门文章
网站地图
返回首页 企库往资讯移动站 http://ww.kub2b.com/mobile/ , 查看更多