1. 海量数据选取TOPK
baseline:
用堆,如果取最大的K个,就用最小堆,遍历数组,遇到比堆顶元素大的元素就入堆,同时堆中元素超过k个需要poll操作,保证堆中只有K个元素,最终的topk元素在堆中。
时间复杂度分析:
算法:
先用quick select方法找到第K大的元素,复杂度
然后再遍历一遍,将大于K的元素取出,复杂度
总复杂度
!!!!!卧槽!神奇!!!!
follow up:海量数据选取第K大
Quick Select,详见【九章算法强化班】两指针
时间复杂度
2. 大数排序问题
海量数据排序怎么做?
baseline:快排,问题:数据量很大,内存根本存不下,不可行
桶排序:
将数据分桶,每个桶存入一个文件,然后文件内部有序,取出合并的时候可以用K路归并,优化:k路可以建个堆