zoukankan      html  css  js  c++  java
  • 查找两个数组的相同字符(两个超大文件的相同字符)

    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)排序

        

  • 相关阅读:
    机器学习
    机器学习
    JavaWeb之tomcat安装、配置与使用(一)
    Tomcat安装、配置和部署笔记
    Java配置----JDK开发环境搭建及环境变量配置
    安装SQL2012
    SQLServer 数据库变成单个用户后无法访问问题的解决方法
    临时记录
    SQL Server 动态生成数据库所有表Insert语句
    SQL2000查看表的大小
  • 原文地址:https://www.cnblogs.com/GuoJiaSheng/p/5279974.html
Copyright © 2011-2022 走看看