其中有三个时间复杂度为O(nlogN)的要着重学习:
一、归并排序,有两种实现方案
归并排序有两种实现方案,一种是顶向下的归并(分治),一种是自底向上的归并(动态规划)。
二、快速排序,也有两种
第一种快排:QuickSort,种有一个partion()方法;
第二种快排:Quick3Way,叫三路快排,适合对有列表中有多个重复元素的排序;
三、堆排序,基于sink()方法
无需构建一个堆结构,只需使用sink()方法。
具体的代码在github上:https://github.com/hefrankeleyn/ARTS/LeetCodeWP/src/main/java/com/hef/week09/sort