算法面试
1
乡村非主流2020
这个作者很懒,什么都没留下…
展开
-
【top K问题】
海量数据处理 - 10亿个数中找出最大的10000个数(top K问题) 建立最小堆 先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的10000个数就是所需的最大的10000个。建堆时间复杂度是O(mlogm),算法的时间复杂度为O(nmlogm)(n为10亿,m为10000)。 优化的方法:可以把所有10亿个数据分组存放,比如分别放在1000个文件中...原创 2020-11-14 17:41:14 · 184 阅读 · 0 评论 -
面试必需--排序算法
二分查找 注意:二分查找的数组一定是有序的!!! 在有序数组array[]中,不断将数组的中间值(mid)和被查找的值比较,如果被查找的值等于array[mid],就返回下标mid; 否则,就将查找范围缩小一半。如果被查找的值小于array[mid], 就继续在左半边查找;如果被查找的值大于array[mid], 就继续在右半边查找。 直到查找到该值或者查找范围为空时, 查找结束。 不用递归的二分查找如下: 1 2 3 4 5 6 7...原创 2020-07-15 19:08:03 · 197 阅读 · 0 评论