查找兩個數組的相同字符(兩個超大文件的相同字符)


1.找到兩個數組中的相同元素

數組A

數組B

方法1:對A中的數組進行排序,采取同樣的排序方法對B中的數組進行排序

     1)從A,B中各自取出a,b進行比較

     2)如果a>b,那么從B中取出下一個數據b進行比較

   3)如果a<b,那么從A中取出下一個數據a進行比較

     4)如果a=b,那么找到一個,繼續

 

方法2:hash

  1)對A中的m個數據裝入到hash表

      2)對B中的n個數據一次去hash表中查詢,如果找到那么就是相同元素

 

升級:如果數據特別大,內存無法裝下。  兩個大文件,查找相同字符串

  hash,分治法:

     1)采用hash算法對A文件進行hash成a個小文件

     2)采取同樣的hash算法對B文件進行hash成b個小文件

     3)比較小文件對<a1,b1>.........因為hash的問題,所以相同的字符串肯定在同個文件對里面。

     4)統計小文件對,可以繼續采用hash,對a1的每一字符串建立hash表,遍歷b1的字符串看是否在之前構建的hash表里面(和上面一樣)

   

   一般來說,如果內存可以存放,可以構造hash表,進行查找。如果內存無法加載,那么可以通過hash把大文件分成多個小文件,從而進行比較。

 

   hash算法在海量數據中的運用:

        單機處理大數據的問題也和mapreduce一樣,分而治之,把海量數據切分成若干個小份進行處理。

    1)分而治之

         采用hash進行取模進行等價映射,將巨大的文件進行等價分割(符合一定規律的數據會被划分到同一個文件),划分成若干個小文件再進行處理。

    2)利用hashmap進行內存統計

    利用hashMap對小文件里面的數據進行統計

    3)排序

 

 

 

 

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM