Mergesort
merge sort里的基本思路就是递归的将要排序的数组划分成两个部分,然后将这两个子数组排序后在做归并,这样就得到一个排序后的数组。
一个简单的例子
mergesort uses at most NlogN compares and 6NlogN array accesses
分治算法
在对原始的mergesort改进上,提出了bottom-up mergesort 。就是前面的代码里,我们实现merge sort用的是top down的方式。也就是说我们首先递归的划分了各个段,再针对每个段来归并。实际上,我们也可以倒过来,从下到上,也就是一种bottom up的方式。
排序算法可以看成是一个决策树模型
排序的稳定性:在排序前后 具有相等值的项的先后顺序不会改变 就是稳定排序
2.Quicksort
排序流程
优点:节省space
缺点:重复值多时,效率不高且不稳定
快速选择(quick-select):就是从给定的一个集合S={a1,a2,...an}中选出第K个大小的数,或者给出其所在的下标之类的。
当碰到很多duplicate value 时,可以采用3-way-partitioning
排序算法小结