`
lykm02
  • 浏览: 51320 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

海量数据中选出若干大数字的算法

阅读更多
今天去面试了一家公司,被问到了这样一道题目:
如何最快的从1M数据中选出100个最大的数据。

问题不在于找出最大的数据,而是在于最快的算法。

我们可以建堆来搞定这件事,比如建一个100的小顶堆。这样只需要和最小的比较就好了。
这个大概时间复杂度为O(n log^2 m) 应该说这是一个比较不错的方案。

也许还有更快的方案。

比如快速排序。
如果我们快速排序支点选择的好,可以加速这个寻找的过程。
比如说,如果我们很幸运,找到了第m+1个大的数目,基本一次快排就搞定了。

所以下面的问题就是我们通常没那么走运,那么如何选择支点就是一个可以优化的方向。
如何选择支点呢?
一个简单的方法,经过一次扫描,得到数据中最大值和最小值,然后二分来做为支点。
这样由于二分其实是一个很不错的降解方案(不用考虑数据分布了)。可以很快找到m个数字。

所以应该在数据规模不是很大的情况下,应该用二分+快排来搞定这件事情。
当然如果规模更大的话就要考虑桶排序或者bitmap之类的啦。

另外,这种题目基本不是来考验人的应变的,更多的感觉是考验一个人的经验。

0
1
分享到:
评论

相关推荐

    最快的排序算法 算法:从25匹马中选出最快的三匹马,排序算法数据结构

    在实际应用中,我们经常需要从大量数据中快速地选出最优的几个元素,而快速排序算法正是解决这个问题的利器。本文将讲解如何使用快速排序算法从25匹马中选出最快的三匹马,并对相关的数据结构和算法进行详细的解释。...

    数据挖掘中十大经典算法

    数据挖掘十大经典机器学习算法,国际权威的学术组织 the IEEE International Conference on Data Mining (ICDM) 2006 年 12 月评选出了数据挖掘领域的十大经典算法: C4.5, k-Means, SVM, Apriori, EM, PageRank, ...

    数据结构实验-排序算法

    1. **选择排序**:选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。它的主要特点是每次遍历都能...

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

    ### 海量数据处理知识点详解 ...通过以上解析可以看出,面对海量数据处理的问题,合理利用各种数据结构和算法是非常重要的。不同的应用场景需要选择合适的技术手段来解决问题,以达到最优的性能表现。

    算法/编程练习:找出若干个数使其和最接近于M

    需要从alts中选取若干个备选数,使其和为M 若找不到和刚好与M相等的备选数列表,则返回和与M最接近的备选数列表 若有多个结果,返回一个即可 eg1. 输入: alts = [10, 9, 8, 7, 6, 5] M = 22 输出: [10, 7, 5] ...

    pascal 从X个数字中选出N个数字的排法

    在计算机科学与编程领域,排列组合问题经常出现,特别是在算法设计、数据结构分析等场景中。本篇文章将详细解析一个具体的排列问题:“从1到X这X个数字中选出N个,排成一列,相邻两数不能相同,求所有可能的排法”。...

    常用算法设计与数据结构

    - **选择排序**:选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。如文中的描述,选择排序无论...

    2019年北京工业大学《数据结构与算法分析》期末考试试卷.pdf

    因此,我们将忽略这些内容,聚焦于题目中提到的《数据结构与算法分析》课程的关键知识点进行总结。 ### 数据结构与算法分析 #### 一、数据结构基础 1. **线性表**:线性表是最基本的数据结构之一,其特点是元素...

    最快的排序算法 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹(详解)?,排序算法数据结构

    腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹(详解),排序算法数据结构 知识点1:排序算法的应用场景 在腾讯算法面试题中,要求选出64匹马中最快的四匹,需要使用排序算法来解决这个问题。排序...

    计算机联锁的数据结构及进路搜索算法.pdf

    进路搜索算法是联锁系统中的核心算法之一,它根据操作命令,能够选出一条符合操作意图的进路。在选择进路时,需要遵循的基本措施包括:首先,根据进路操作命令,确定相邻的指定节点对,并按“节点对”分段依次进行...

    数据结构排序算法

    它的基本思想是从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 ...

    数据结构各种算法实现

    在计算机科学中,数据结构是组织、存储和处理数据的方式,而算法是解决问题或执行任务的精确步骤。本文将深入探讨几种基本的数据结构及其相关的算法实现,主要使用C++编程语言。 1. 顺序表 顺序表是一种最基础的...

    数据结构中各种排序算法的比较与分析.pdf

    但根据文件标题《数据结构中各种排序算法的比较与分析.pdf》和标签《数据结构 数据分析 大数据 参考文献 专业指导》,可以推测文件内容应该是一篇对不同排序算法进行比较和分析的学术或教学材料。 以下是对数据结构...

    java数据结构和算法

    在探讨《Java数据结构与算法》这一主题时,我们不仅会深入分析其核心概念,还会通过实例演示如何在Java环境中实现这些数据结构和算法。本文将全面覆盖标题、描述及部分示例内容所提及的关键知识点,并确保内容充实、...

    java数据结构大作业,排序算法是性能比较

    在Java数据结构的学习中,排序算法的...总体来说,这个Java数据结构的大作业是一个综合性的项目,不仅要求实现多种排序算法,还涉及到性能测试和分析,有助于提升对数据结构和算法的理解,以及在实际编程中的应用能力。

    随机森林算法   将多个决策树结合在一起,每次数据集是随机有放回的选出,同时随机选出部分特征作为输入,所以该算法被称为随机森林算

      将多个决策树结合在一起,每次数据集是随机有放回的选出,同时随机选出部分特征作为输入,所以该算法被称为随机森林算法。可以看到随机森林算法是以决策树为估计器的Bagging算法。 图2-3   图2-3展示了随机...

    数据结构课件中内部排序算法的动态演示实现.pdf

    - 数据结构中涉及到的内部排序算法通常分为直接插入排序、选择排序和冒泡排序。 - 直接插入排序是将待插入的数据记录依次与已排序部分的记录进行比较,并找到合适位置插入。 - 选择排序则是每次从待排序记录中...

    自动数据挖掘算法.pdf

    综上所述,自动数据挖掘算法的提出和研究,不仅推动了数据挖掘技术的发展,也为行业数据的分析和利用提供了更加智能化和自动化的工具,使得从海量数据中提取有用信息成为可能。这不仅有助于提高决策的质量,也能带来...

    C++常见八大排序算法

    2. **选择排序**:选择排序是一种不稳定的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。这种算法对于大规模数据表现不...

Global site tag (gtag.js) - Google Analytics