`
hwy1782
  • 浏览: 153949 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

海量数据搜索算法优化-存储/查询/排序算法

阅读更多


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

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

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


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

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

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

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

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

  2、有一篇英文文章(也就是说每个单词之间由空格分隔),请找出“csdn”着个单词出现的次数,要求效率最高,并写出算法的时间级。


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

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

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

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

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

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

  方法2: 分块, 比如100w一个块, 找出最大1w个, 一次下来就剩下100w数据需要找出1w个了.(注意消重,这剩下的100w个数据应该是互不相同的。即每找出一个块里最大的1w个,就应该hash存储。下一个块中若出现了已存储的数据,则不计在此块的top 1w里,这样才能保证最终剩下的100w里面寻找top 1w就接近1亿里面的top 1w。想想:如果每个块的top 1w都基本是重复的,不消重的话,最终的结果有可能就少于1w个。)

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

  用快速排序的方法, 分2堆, 如果大的那堆个数N大于1w个, 继续对大堆快速排序一次分成2堆, 如果大堆个数N小于1w, 就在小的那堆里面快速排序一次, 找第10000-N大的数字; 递归以上过程, 就可以找到第1w大的数. 据说也是STL的search_n()的方法;(更好的一种类似的方法是将这些数以5个为一组,每组通过插入排序找出其中位数,再找出其中位数的中位数,依次递归,找出最终一个中位数x,然后按照x对序列进行快排,且设x是序列的第k大的数,如果要找的是第i大的数,则比较k与i的关系,如果相等,直接返回x,否则如果k>i,则在小的那堆里面继续按照这种方式快排,如果k<i,则在大堆里面找第i-k大的数。)

  参考上面的找出第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 ')
因为每位都有0-25,共26个值,所以这里采用了32进制,主要是因为32>26,且32 = 1<<5,利用移位操作使得效率大大提高,不需要再按位比较字符串,通过移位之后比较两英文单词所映射得到的整数值即可(比较一次)。

分享到:
评论

相关推荐

    大数据之数据挖掘课程:海量数据集挖掘 05-聚类算法 clustering 共53页.pdf

    - **应用场景**:搜索引擎结果排序、社交网络影响力分析等。 #### 9. WebSpam - **定义**:指恶意制造的网页内容,旨在欺骗搜索引擎以获得更高的排名。 - **检测方法**: - 链接分析:检查异常的链接模式。 - ...

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

    同时,优化内存使用、降低IO操作的次数、有效利用数据结构(如哈希表、堆、树等)以及采用合适的排序算法都是解决问题的关键。对于面试或者实际工作中的这类问题,理解并掌握这些基础算法和数据结构的原理及其应用是...

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

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

    海量数据处理方法

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

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

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

    海量数据如何做分页处理-方案公布

    综上所述,海量数据的分页处理不仅涉及到具体的分页算法,还包含了对数据结构、数据库性能优化以及编程技巧的综合考量。开发者需要根据实际情况选择最合适的方案,并结合各种优化措施,以实现高效、稳定的数据处理...

    大数据之数据挖掘课程:海量数据集挖掘 01-Mapreduce 共68页.pdf

    - **图算法**:包括图遍历(深度优先搜索、广度优先搜索)、最短路径算法(Dijkstra算法、Floyd-Warshall算法)等。 - **应用场景**:社交网络分析、推荐系统、网络路由协议等。 #### 10. 大规模机器学习(Large ...

    SQL Server海量算法优化.doc

    本文以"SQL Server海量算法优化.doc"为背景,探讨如何在拥有千万级数据的环境中提高查询效率并实现高效的数据分页。 首先,我们需要理解查询优化的基本原则。在SQL Server中,查询优化器会根据查询语句的逻辑和表的...

    数据挖掘算法知识包

    扎实的算法基础对于优化数据挖掘流程至关重要。 总的来说,这个知识包提供了一个全面的数据挖掘学习框架,从工具选择到具体算法的实施,再到理论基础的巩固。深入学习并掌握其中的知识,将有助于我们在大数据时代中...

    大数据-算法-制造物联海量实时数据处理方法研究.pdf

    为了进一步提升海量实时数据分发效率,研究引入了智能多代理模型和优先级排序算法。通过这种方式,能够更高效地调度和分发数据,适应复杂网络环境,显著提高了数据分发的效率和系统性能。 在数据融合方面,研究分析...

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

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

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

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

    大数据之数据挖掘课程:海量数据集挖掘 10-WebSpam 共61页.pdf

    - **概念**:流数据是指连续不断地生成的数据流,这类数据无法存储下来后再进行处理。 - **处理方法**:设计特定的算法来实时处理流数据,如滑动窗口、固定大小的样本等。 #### 12. Web广告 (Web Advertising) - **...

    2021-2022收藏资料海量数据库的 查询优化及分页算法方案81976.doc

    在IT领域,数据库查询优化和分页算法是提高系统性能的关键技术,特别是在处理海量数据时。本文档"2021-2022收藏资料海量数据库的查询优化及分页算法方案81976.doc"以"办公自动化"系统为例,探讨了在MSSQL SERVER...

Global site tag (gtag.js) - Google Analytics