海量数据搜索算法优化(转)

原文地址 http://www.ad0.cn/netfetch/read.php/1134.htm

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

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

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

百度、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,利用移位操作使得效率大大提高,不需要再按位比较字符串,通过移位之后比较两英文单词所映射得到的整数值即可(比较一次)。

海量数据搜索算法优化(转)相关推荐

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

    海量数据库的应用,如国家的人口管理系统,户籍档案管理系统,在这样的海量数据库应用中,数据库的存储设计和结构优化(如索引优化).数据库的查询优化及分页算法尤为重要! 随着互联网的日益普及,海量信息的增长 ...

  2. 百万级数据量,千万级数据量是多少,海量数据的优化方案

    百万级数据量,千万级数据量是多少? 这里的百万级,千万级,针对数据库,指的是表的数据条数.有时也指并发事务量. 海量数据的优化方案 Note:    具体优化要结合自身的业务特性 百万级: 这个数据量 ...

  3. Python实现SSA智能麻雀搜索算法优化支持向量机回归模型(SVR算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 麻雀搜索算法(Sparrow Search Algorithm, ...

  4. MATLAB实现基于遗传算法/引力搜索算法优化新安江水文模型

    MATLAB实现基于遗传算法/引力搜索算法优化新安江水文模型 1 新安江模型 1.1 新安江模型结构 1.2 模型参数种类及意义 2 新安江模型优化参数 2.1 蒸散发参数: KC.WUM.WLM.C ...

  5. 基于麻雀搜索算法优化的lssvm回归预测

    基于麻雀搜索算法优化的lssvm回归预测 - 附代码 文章目录 基于麻雀搜索算法优化的lssvm回归预测 - 附代码 1.数据集 2.lssvm模型 3.基于麻雀算法优化的LSSVM 4.测试结果 5 ...

  6. 基于麻雀搜索算法优化的支持向量机回归预测-附代码

    基于麻雀搜索算法优化的支持向量机预测及其MATLAB代码实现 文章目录 基于麻雀搜索算法优化的支持向量机预测及其MATLAB代码实现 1. 基于麻雀搜索算法优化的支持向量机预测简介 1.1 支持向量机 ...

  7. python网格搜索法_Python中基于网格搜索算法优化的深度学习模型分析糖尿病数据...

    介绍 在本教程中,我们将讨论一种非常强大的优化(或自动化)算法,即网格搜索算法.它最常用于机器学习模型中的超参数调整.我们将学习如何使用Python来实现它,以及如何将其应用到实际应用程序中,以了解它 ...

  8. 天牛须搜索算法优化神经网络_matlab代码

    BAS原理 天牛须搜索算法(beetle antennae search,BAS)算法是2017年提出的一种 基于天牛觅食原理的适用于多目标函数优化的新技术,其生物原理为:当天牛觅食时,其并不知道食物 ...

  9. 【FNN分类】基于粒子群结合引力搜索算法优化前向反馈神经网络实现数据分类附matlab代码

    1 内容介绍 引力搜索算法(GSA)是一种基于引力定律和质量相互作用的新型启发式优化方法.实践证明,该算法具有较好的全局最优搜索能力,但在最后一次迭代中存在搜索速度较慢的问题.这项工作提出了粒子群优化 ...

最新文章

  1. 手握173篇论文的学术新星被指造假!后续:博士论文被召回
  2. JavaScript设置对象的不可拓展
  3. VC++/MFC中调用CHM帮助文档的方法--ShellExecute
  4. 64位百度云 catia v6_福利缩水:百度网盘决定收回部分储存空间
  5. 地线与接地螺丝_电气接地的规范要求及接地的各项参数,收藏!
  6. Word中如何保证正文首行缩进其他标题不动
  7. mybatis list条件判断
  8. 易语言Note:酷Q插件开发起航
  9. NS,DNS和A记录 之间关系
  10. 测试内存条是否兼容软件,18款内存条兼容性测试
  11. erp实施 数据库面试题_erp实施顾问笔试题有什么_erp实施顾问
  12. DTOJ #1079. 多项式展开 mult
  13. 网络游戏外挂制作(3)
  14. 35岁的程序员:第14章,前奏
  15. 教程篇(5.4) 03. FortiManager 设备注册 ❀ Fortinet 网络安全专家 NSE5
  16. TPS5430DDAR高输出电流PWM转换器
  17. 握草!查询提升200倍,它难道想干掉传统数据库?
  18. 【Gated Context Aggregation Network for Image Dehazing and Deraining用于图像去雾和去雨的门控上下文聚合网络】,个人笔记,勿喷
  19. 最易/难学习的编程语言榜单出炉,C++最难学?
  20. 全球正规外汇交易平台大全

热门文章

  1. JS设置Cookie过期时间(网上非常多错误的方法, expires结果差8小时)
  2. 电脑常用软件,让你的电脑更加便捷的黑科技软件
  3. Glide加载GIF
  4. 接口压力测试脚本编写
  5. 世界各国人口相关指标(总人口、城镇/乡村人口及增长率、城镇化率、人口密度、男性/女性人口及增长率)1960-2021
  6. 玻璃盘CCD影像筛选机程序,应用5套CCD视觉系统
  7. vue+elementUl实现登录记住密码功能
  8. latex 编译新的tex时,缺少sty文件时的安装方法
  9. 石油专业:一文入门机器学习,以测井岩性分类预测为例
  10. 中标麒麟操作系统设置或修改root密码