查找中的算法----HASH查找,二分查找,堆查找,B樹查找,字典樹,海量查找算法
字典樹:數據庫
手機鍵盤查詢姓名,查詢對應號碼分佈式
海量查找:搜索引擎
海量日誌數據,提取出某日訪問百度次數最多的那個IP
url
搜索引擎會經過日誌文件把用戶每次檢索使用的全部檢索串都記錄下來,統計最熱門的10個查詢串
spa
有一個1G大小的一個文件,裏面每一行是一個詞,詞的大小不超過16字節,內存限制大小是1M。返回頻數最高的100個詞
日誌
有10個文件,每一個文件1G,每一個文件的每一行存放的都是用戶的query,每一個文件的query均可能重複。要求你按照query的頻度排序。
排序
給定a、b兩個文件,各存放50億個url,每一個url各佔64字節,內存限制是4G,讓你找出a、b文件共同的url?
索引
在2.5億個整數中找出不重複的整數,注,內存不足以容納這2.5億個整數。
內存
給40億個不重複的unsigned int的整數,沒排過序的,而後再給一個數,如何快速判斷這個數是否在那40億個數當中?
在海量數據中找出重複次數最多的一個?
上千萬或上億數據(有重複),統計其中出現次數最多的錢N個數據。
一個文本文件,大約有一萬行,每行一個詞,要求統計出其中最頻繁出現的前10個詞
5億個int找它們的中位數。
總結:
1.bloom filter
2.hash
3.bit-map
4.heap
5.雙層桶劃分(分治後用bitmap或計數排序)
6.B+樹(數據庫思想)
7.反向索引(反向索引則是單詞指向了包含它的文檔)
8.外排序(歸併排序,敗者樹,最優歸併樹)
9.字典樹
10.分佈式處理 mapreduce