去百度面试问了道题:
海量数据找N个最小的,算法实现,时间复杂度?
方法一:(分治)
分成M份,前提每份都是可以读到内存处理的
把读入内存,使用快排分别找到前N个数
最后相当于有M*N个数
如果M*N不能读入内存那么继续分治处理
M*N可以读入内存那么就可以使用快排处理了
方法二:(去重)
使用hash去重,排除重复数据,然后再分治处理
方法三:(最小堆)
用得少。。
去百度面试问了道题:
海量数据找N个最小的,算法实现,时间复杂度?
方法一:(分治)
分成M份,前提每份都是可以读到内存处理的
把读入内存,使用快排分别找到前N个数
最后相当于有M*N个数
如果M*N不能读入内存那么继续分治处理
M*N可以读入内存那么就可以使用快排处理了
方法二:(去重)
使用hash去重,排除重复数据,然后再分治处理
方法三:(最小堆)
用得少。。