`
wuhenliushui
  • 浏览: 17981 次
社区版块
存档分类
最新评论

海量数据搜索、存储、查询、排序算法

 
阅读更多

百度、google海量数据搜索算法题解

海量数据库的应用,如国家的人口管理系统,户籍档案管理系统,在这样的海量数据库应用中,数据库的存储设计和结构优化(如索引优化)、数据库的查询优化及分页算法尤为重要!

随着互联网的日益普及,海量信息的增长,网格运算的到来,海量数据存储产品和海量数据存储技术方案的需求更为市场所需。

同时,实际的海量数据处理,更是涉及很多细节,包括海量数据存储(物理存储、逻辑存储、海量数据库的备份)、数据采集、海量数据查询(海量数据分页、海量数据排序)、海量数据安全和管理等。


百度、google海量数据搜索算法题解

下面是某同仁在baidu和google的笔试中遇到的两道“百度、google海量数据搜索算法题解”

Google和baidu,人家的数据量在那里摆着,他们的命题思路很明确,不要求具体语言,只要求程序的效率和可行性,题目大多数是关于海量数据搜索的算法问题。

百度、google的海量数据搜索算法题

  1、有1亿个浮点数,请找出其中对大的10000个。提示:假设每个浮点数占4个字节,1亿个浮点数就要站到相当大的空间,因此不能一次将全部读入内存进行排序。

  2、有一篇英文文章(也就是说每个单词之间由空格分隔),请找出“csdn”着个单词出现的次数,要求效率最高,并写出算法的时间级。
3.假设有1kw个身份证号,以及他们对应的数据。身份证号可能重复,要求找出出现次数最多的身份证号。

4.百度每天都会接受数亿的查询请求, 如何在这么多的查询(Query)中找出高频的Query是一个不小的挑战. 而你的任务则更加艰巨, 你需要在极其有限的资源下来找出这些高频的Query.(使用内存不得多于1MB) 。输入文件是一行一个Query, 以文件结束符结尾。每个Query字节数L(一个汉字两个字节)满足:0<=16. 输入大小不超过1GB(包括换行符)。 输出你认为最高频的100个query. 每行一个, 不能有重复, 不能多输出, 但可以少输出(见样例).


Peak Wong的海量数据搜索算法题解

  1、有1亿个浮点数,请找出其中对大的10000个。提示:假设每个浮点数占4个字节,1亿个浮点数就要站到相当大的空间,因此不能一次将全部读入内存进行排序。

  ~~~~~~~~~~~~~

  其实占用内存不算大, 可以接受. 呵呵.

  既然不可以一次读入内存, 那可以这么试试:

  方法1: 读出100w个数据, 找出最大的1w个, 如果这100w数据选择够理想, 那么最小的这1w个数据里面最小的为基准, 可以过滤掉1亿数据里面99%的数据, 最后就再一次在剩下的100w(1%)里面找出最大的1w个咯~~

  方法2: 分块, 比如100w一个块, 找出最大1w个, 一次下来就剩下100w数据需要找出1w个了.

  对于上面提到的找出100w个数据里面最大的1w个, 说起来比较罗嗦, 还是说说找到第1w个大的数字的方法:

  用快速排序的方法, 分2堆, 如果大的那堆个数N大于1w个, 继续对大堆快速排序一次分成2堆, 如果大堆个数N小于1w, 就在小的那堆里面快速排序一次, 找第10000-N大的数字; 递归以上过程, 就可以找到第1w大的数. 据说也是STL的search_n()的方法;

  参考上面的找出第1w大数字, 相信楼主就可以类似的方法找出前1w大数字了.


  第二个问题,其实很简单。

  假设不区分大小写,由于英文字母有26个,因此,可以将单词映射为数字。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 ')

再将每个英文字母进行映射,定义循环,从第一个字符开始的映射开始,向后加四个并与CSDN的映射进行比较即可。

分享到:
评论

相关推荐

    海量数据集的排序的设计方案

    在IT领域,面对海量数据集的排序问题,通常需要采取高效且优化的策略,因为传统的排序算法如冒泡、插入或选择排序等在大数据场景下效率极低。本设计方案将探讨几种适用于处理大规模数据的排序算法和技术,以满足高...

    学术文献语义检索系统:排序算法数据集

    "学术文献语义检索系统:排序算法数据集" 提供了一个专门针对这一目标的数据集,旨在帮助研究者和开发者优化搜索结果的排序算法,提高用户在海量学术资源中的查找效率。这个数据集集成了多种排序算法的应用,涵盖了...

    百度、google海量数据搜索算法题解

    标题中的“百度、google海量数据搜索算法题解”和描述提到了两个主要的算法问题,这些问题都是在处理大规模数据时常见的挑战。这类问题通常需要设计高效且内存优化的解决方案,因为数据量太大,无法一次性加载到内存...

    海量数据查找数据问题

    在小规模数据中,我们可以直接排序后取中间位置的数,但在海量数据中,直接排序是不切实际的。因此,我们需要采用更高效的方法,如“快速选择”或“线性时间复杂度的中位数查找算法”。 快速选择算法基于快速排序的...

    十道海量数据处理面试题

    海量数据处理是互联网公司技术面试中的一个重要环节,它主要考察应聘者处理大规模数据集的能力,以及对各种存储、计算、排序算法的理解和应用。以下针对提供的文件内容,提炼出相关的知识点。 首先,海量数据处理的...

    海量数据处理方法

    海量数据处理是指基于海量数据上的存储、处理、操作,解决方案包括巧妙的算法搭配适合的数据结构,如 Bloom filter/Hash/bit-map/堆/数据库或倒排索引/trie 树,以及大而化小、分而治之的策略。根据数据处理的场景,...

    十道海量数据处理面试题与十个方法大总结

    - 在处理大规模数据时,选择合适的排序算法至关重要。 - **5. 外排序技术** - 当数据集过大无法全部放入内存时,需要使用外排序技术。 - 这些技术通常涉及将数据分成多个小文件,然后对每个小文件进行排序和合并...

    海量数据库查询优化及分页算法方案

    在IT行业中,数据库查询优化和分页算法是处理海量数据的关键技术。对于拥有千万级乃至亿级记录的大型数据库,高效的查询和分页策略能够显著提升系统的响应速度和用户体验。以下将详细介绍如何针对大规模数据库进行...

    海量数据库的查询优化及分页算法方案

    海量数据库的查询优化及分页算法方案是一个复杂的问题,需要我们从多方面考虑,包括聚集索引的建立、数据库引擎的选择、存储结构的优化、查询语句的优化等。只有通过合理的优化和分页算法,我们才能实现快速地从海量...

    块状数据上的并行归并排序算法.pptx

    综上所述,块状数据上的并行归并排序算法通过对数据的有效划分、并行处理以及负载均衡策略的应用,不仅能够显著提高排序效率,还能广泛应用于多种场景,包括分布式存储系统、云计算环境、大数据处理以及实时数据流...

    大数据量整数排序

    总结起来,解决大数据量整数排序的关键在于合理利用内存,减少不必要的I/O操作,并选择高效的排序算法。位向量在这里发挥了关键作用,通过巧妙地映射和存储数据,实现了高效的空间利用和排序。在实际应用中,类似的...

    排序算法中的量子计算加速.pptx

    **应用前景**:量子排序算法在海量数据处理、基因组分析、机器学习等领域具有广泛的应用前景。 #### 三、量子快速排序的优势 **量子叠加的并行性**:量子比特能够处于叠加态,同时处于0和1状态,从而并行比较多个...

    海量数据划分内存不足问题解决方法

    ### 海量数据划分内存不足问题解决方法 #### 背景与挑战 在处理海量数据时,经常会遇到由于内存限制导致无法一次性加载全部数据的问题。这种情况下,如何有效地进行数据处理,特别是排序操作,成为了亟需解决的...

    海量数据算法

    海量数据算法是处理大规模数据的核心技术,特别是在互联网公司如百度、谷歌等的面试中,这一领域的知识至关重要。处理海量数据的主要挑战在于数据量过大,无法一次性加载到内存中进行常规处理。因此,需要采取特定的...

    海量数据面试题整理txt

    - **外部排序**:当数据量太大而无法完全加载到内存中时,可以使用外部排序算法。 - **并行处理**:利用分布式计算框架,如Hadoop或Spark,可以在多台机器上并行处理数据。 例如,对于包含1亿条记录的数据集,可以...

    海量数据处理

    海量数据处理是指在合理的时间内,对大规模数据集进行高效存储、管理和分析的技术过程。这种处理方式不仅涉及到数据的收集、清洗和存储,更重要的是通过各种算法和技术来实现数据分析和挖掘。 #### 二、海量数据...

    海量数据搜索技术相关论文

    综上所述,海量数据搜索技术是一个复杂而广泛的领域,涵盖了数据存储、索引构建、搜索算法、分布式系统以及人工智能等多个方面。Lucene作为其中的重要组件,为构建高效、可扩展的搜索应用提供了强大的支持。

    持续排序-实时数据流的连续排序.pptx

    - 持续排序算法依赖合适的数据结构来存储和维护有序数据。 - 常用数据结构包括平衡树、跳表、哈希表等,它们具有不同的特性,如高效的插入、删除和查找操作。 #### 传统排序算法的不足 在面对实时数据流的持续...

    外部排序算法

    外部排序是一种处理大规模数据的排序算法,当数据量大到无法一次性装入内存时,我们需要借助外部存储设备,如硬盘,来完成排序过程。这种情况下,我们无法直接使用内部排序算法,如快速排序、归并排序等,因为它们...

Global site tag (gtag.js) - Google Analytics