• 2014 网易互联网在线笔试题


    称号:有四个文件,在那里每个文件100万家int类型整数。内存限制1M,如何最有效地获得四个文件的交汇点数量,的数量是出现在所有四个文件数?


    我的想法:由于内存限制1M。那是,1024*1024字节,比文件共享存储的整体数量较少100 0000*4,所以文件里的数没办法一次装到内存。採用外部排序、归并等方法实现。


    详细:

    1、最開始应该是对每一个大文件进行外部排序,也就是n次从大文件里取出一部分数在内存中进行高速排序或堆排序,然后将结果存入小文件里,存入小文件的同一时候去重。
    2、然后对n个小文件进行归并排序,将已排序结果存入新的大文件。这样能得到四个没有反复数的新的大文件;
    3、接下来对这四个已排序的文件。设为f1,f2,f3,f4进行类似归并操作,两个指针一開始指向f1与f2的头部,值不相等的“丢掉”,相等的存入新的文件f12,f3,f4进行一样操作得到f34文件,再对这两个文件进行上诉操作,得到终于结果文件result,同一时候能够得到其个数。



    我发了个帖子收集各位的算法,有的用bitmap实现。有的用多趟遍历实现,各位能够看看还有什么优化的方法。

    http://bbs.csdn.net/topics/390889640

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    ORA16014 与 ORA00312
    ORA26687
    ORA32004问题解决
    ORA23616:执行块5失败
    Streams实践之Schemas级复制
    Streams FAQ
    ORA23622: 正在执行操作SYS.DBMS_STREAMS_ADM.MAINTAIN_GLOBAL
    为什么白帽SEO更好?
    HyperV虚拟机安装及网卡无法找到,驱动无法安装解决办法
    Memcahed分布式缓存服务替换Session解决方案——简单介绍[转]
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4844709.html
Copyright © 2020-2023  润新知