“分治算法 求第k小元素 O(n) & O(nlog2^n)”
容易想到的算法是采用一种排序算法先将数组按不降的次序排好,然后从排好序的数组中捡出第k个元素。这样的算法在最坏情况下时间复杂度是O(nlog2^n)。实际上,我们可以设计出在最坏情况下的时间复杂度为O(n)的算法。利用分治算法并结合快排思想,很容易达到O(n)的时间复杂度。其核心思想在于快排中基准的选取。(根据严蔚敏版教材,一般直接选取第一个元素作为快排基准。但求第k小元素,则依赖于一种中...
转载
2018-08-04 19:42:11 ·
563 阅读 ·
0 评论