博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
查找两个数组的相同字符(两个超大文件的相同字符)
阅读量:7088 次
发布时间:2019-06-28

本文共 738 字,大约阅读时间需要 2 分钟。

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

 

 

 

 

    

转载于:https://www.cnblogs.com/GuoJiaSheng/p/5279974.html

你可能感兴趣的文章
苹果紧急发布新系统iOS 11.0.1 修复多种BUG
查看>>
亚信安全成为 “上海网络与信息安全监测预警平台” 首批发起单位
查看>>
构建基于容器的本机监控系统 应该注意什么?
查看>>
坚持做创业护卫队的770天
查看>>
《ANSYS Workbench 14有限元分析自学手册》——导读
查看>>
OC之构造方法
查看>>
6个你必须用到AJAX的地方与6个不必用到的地方
查看>>
OpenExpressApp 框架结构(2)
查看>>
read和变量设定方式
查看>>
利用UltraISO制作RedhatU盘启动盘
查看>>
什么是高内聚、低耦合?
查看>>
g++编译过程和动态链接库
查看>>
java在线预览txt、word、ppt、execel,pdf代码
查看>>
ORA-100501: non-ORACLE exception
查看>>
不安装Oracle客户端也能使用PL/SQL
查看>>
我的友情链接
查看>>
FineReport中如何自定义登录界面
查看>>
元素始终居浏览器窗口中间的位置
查看>>
Linux的常用目录(Ubuntu)
查看>>
linux 下更改文件名编码方式
查看>>