海量資料搜尋 儲存 查詢 排序演算法

2021-08-30 23:14:09 字數 1299 閱讀 6705

海量資料庫的應用,如國家的人口管理系統,戶籍檔案管理系統,在這樣的海量資料庫應用中,資料庫的儲存設計和結構優化(如索引優化)、資料庫的查詢優化及分頁演算法尤為重要!

隨著網際網路的日益普及,海量資訊的增長,網格運算的到來,海量資料儲存產品和海量資料儲存技術方案的需求更為市場所需。

同時,實際的海量資料處理,更是涉及很多細節,包括海量資料儲存(物理儲存、邏輯儲存、海量資料庫的備份)、資料採集、海量資料查詢(海量資料分頁、海量資料排序)、海量資料安全和管理等。

google和baidu,人家的資料量在那裡擺著,他們的命題思路很明確,不要求具體語言,只要求程式的效率和可行性,題目大多數是關於海量資料搜尋的演算法問題。

2、有一篇英文文章(也就是說每個單詞之間由空格分隔),請找出「csdn」著個單詞出現的次數,要求效率最高,並寫出演算法的時間級。

3.假設有1kw個身份證號,以及他們對應的資料。身份證號可能重複,要求找出出現次數最多的身份證號。

peak wong的海量資料搜尋演算法題解

其實占用記憶體不算大, 可以接受. 呵呵.

既然不可以一次讀入記憶體, 那可以這麼試試:

方法1: 讀出100w個資料, 找出最大的1w個, 如果這100w資料選擇夠理想, 那麼最小的這1w個資料裡面最小的為基準, 可以過濾掉1億資料裡面99%的資料, 最後就再一次在剩下的100w(1%)裡面找出最大的1w個咯~~

方法2: 分塊, 比如100w乙個塊, 找出最大1w個, 一次下來就剩下100w資料需要找出1w個了.

對於上面提到的找出100w個資料裡面最大的1w個, 說起來比較羅嗦, 還是說說找到第1w個大的數字的方法:

用快速排序的方法, 分2堆, 如果大的那堆個數n大於1w個, 繼續對大堆快速排序一次分成2堆, 如果大堆個數n小於1w, 就在小的那堆裡面快速排序一次, 找第10000-n大的數字; 遞迴以上過程, 就可以找到第1w大的數. 據說也是stl的search_n()的方法;

參考上面的找出第1w大數字, 相信樓主就可以類似的方法找出前1w大數字了.

第二個問題,其實很簡單。

假設不區分大小寫,由於英文本母有26個,因此,可以將單詞對映為數字。csdn被對映成:

( 'c '- 'a ')*32*32*32+( 's '- 'a ')*32*32+( 'd '- 'a ')*32+( 'n '- 'a ')

即:( 'c '- 'a ')*(1 < <15)+( 's '- 'a ')*(1 < <10)+( 'd '- 'a ')*(1 < <5)+( 'n '- 'a ')

再將每個英文本母進行對映,定義迴圈,從第乙個字元開始的對映開始,向後加四個並與csdn的對映進行比較即可。

設計海量key value資料的儲存查詢模組

設計海量key value資料的儲存查詢模組 單機儲存100億大資料量的key value資料,要求能夠支援插入和查詢操作,單條資料長度不定,平均約1024位元組,假設可用記憶體10g,磁碟空間不限,請設計乙個儲存查詢模組,支援按照key來獲取對應的value,設計目標以查詢效能為先,盡量節約資源,...

聊聊資料儲存查詢

這裡我沒有說出是資料庫的操作,但是一般來說,我們都是採用資料庫。對於資料庫儲存,我想先說說幾類優化。1 sql語句優化 說sql語句優化,這個內容比較大,我記得還有專門說sql優化的文件,網上可以自己搜尋,因為每一種資料庫有自己特性,優化語句不一樣。通用的就是建立索引,查詢時盡量有索引。少用in.2...

海量資料排序演算法

題目 有100萬無序資料,要求從小到大排序。但是每次記憶體只能排序1萬條資料。1.因為每次只能處理1萬條資料,所以要分組處理,我們將100萬資料分成100組 2.因為每組資料都是無序的,所以我們使用平均時間複雜度較好的演算法。3.當我們分組排序完成後,我們要排序1萬條資料就會簡單很多了。我們一共要取...