海量數據搜索算法優(yōu)化-存儲查詢(xún)排序算法百度、google海量數據搜索算法題解 海量數據庫的應用,如國家的人口管理系統,戶(hù)籍檔案管理系統,在這樣的海量數據庫應用中,數據庫的存儲設計和結構優(yōu)化(如索引優(yōu)化)、數據庫的查詢(xún)優(yōu)化及分頁(yè)算法尤為重要!
隨著(zhù)互聯(lián)網(wǎng)的日益普及,海量信息的增長(cháng),網(wǎng)格運算的到來(lái),海量數據存儲產(chǎn)品和海量數據存儲技術(shù)方案的需求更為市場(chǎng)所需。
同時(shí),實(shí)際的海量數據處理,更是涉及很多細節,包括
海量數據存儲(物理存儲、邏輯存儲、海量數據庫的備份)、數據采集、海量數據查詢(xún)(海量數據分頁(yè)、海量數據排序)、海量數據安全和管理等。
百度、google海量數據搜索算法題解下面是某同仁在baidu和google的筆試中遇到的兩道“百度、google海量數據搜索算法題解”
Google和baidu,人家的數據量在那里擺著(zhù),他們的命題思路很明確,不要求具體語(yǔ)言,只要求程序的效率和可行性,題目大多數是關(guān)于海量數據搜索的算法問(wèn)題。
百度、google的海量數據搜索算法題 1、有1億個(gè)浮點(diǎn)數,請找出其中對大的10000個(gè)。提示:假設每個(gè)浮點(diǎn)數占4個(gè)字節,1億個(gè)浮點(diǎn)數就要站到相當大的空間,因此不能一次將全部讀入內存進(jìn)行排序。
2、有一篇英文文章(也就是說(shuō)每個(gè)單詞之間由空格分隔),請找出“csdn”著(zhù)個(gè)單詞出現的次數,要求效率最高,并寫(xiě)出算法的時(shí)間級。
Peak Wong的海量數據搜索算法題解 1、有1億個(gè)浮點(diǎn)數,請找出其中對大的10000個(gè)。提示:假設每個(gè)浮點(diǎn)數占4個(gè)字節,1億個(gè)浮點(diǎn)數就要站到相當大的空間,因此不能一次將全部讀入內存進(jìn)行排序。
~~~~~~~~~~~~~
其實(shí)占用內存不算大, 可以接受. 呵呵.
既然不可以一次讀入內存, 那可以這么試試:
方法1: 讀出100w個(gè)數據, 找出最大的1w個(gè), 如果這100w數據選擇夠理想, 那么最小的這1w個(gè)數據里面最小的為基準, 可以過(guò)濾掉1億數據里面99%的數據, 最后就再一次在剩下的100w(1%)里面找出最大的1w個(gè)咯~~
方法2: 分塊, 比如100w一個(gè)塊, 找出最大1w個(gè), 一次下來(lái)就剩下100w數據需要找出1w個(gè)了.
對于上面提到的找出100w個(gè)數據里面最大的1w個(gè), 說(shuō)起來(lái)比較羅嗦, 還是說(shuō)說(shuō)找到第1w個(gè)大的數字的方法:
用快速排序的方法, 分2堆, 如果大的那堆個(gè)數N大于1w個(gè), 繼續對大堆快速排序一次分成2堆, 如果大堆個(gè)數N小于1w, 就在小的那堆里面快速排序一次, 找第10000-N大的數字; 遞歸以上過(guò)程, 就可以找到第1w大的數. 據說(shuō)也是STL的search_n()的方法;
參考上面的找出第1w大數字, 相信樓主就可以類(lèi)似的方法找出前1w大數字了.
第二個(gè)問(wèn)題,其實(shí)很簡(jiǎn)單。
假設不區分大小寫(xiě),由于英文字母有26個(gè),因此,可以將單詞映射為數字。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 ')
深圳海量存儲設備有限公司是目前國內具備完善的海量數據存儲解決方案的企業(yè)之一。
隨著(zhù)
海量數據存儲設備的需求日增,全球各大高端存儲設備廠(chǎng)商都將面臨海量數據存儲的新挑戰。