可用三种方法:
第一种暴力法,先排序再取值,快速排序O(nlogn)
第二种固定k个元素的最小堆,遍历建堆完毕后取堆顶,建堆时间复杂度O(logk),遍历数组中元素对堆进行调整工作是O(nlogk)。
第三种快速排序思想进行选择,分治后只递归一边,O(n)。
1 | // 纯手写最小堆 |
可用三种方法:
第一种暴力法,先排序再取值,快速排序O(nlogn)
第二种固定k个元素的最小堆,遍历建堆完毕后取堆顶,建堆时间复杂度O(logk),遍历数组中元素对堆进行调整工作是O(nlogk)。
第三种快速排序思想进行选择,分治后只递归一边,O(n)。
1 | // 纯手写最小堆 |