`
beck5859509
  • 浏览: 110360 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

大数据中查找最大10个数---普通查找与堆查找的比较

    博客分类:
  • java
 
阅读更多
从一批数据中查找前10个最大值。正常的想法是构建一个10个数的数组,轮询查找的数据并与10个数中最小的比较,然后替换。
另一种思路采用大顶堆的方式。但是只用构建10次大顶堆即可。


多次运行程序后的结论:
100000000个数中普通查找速度大概是18秒,而堆方式查找只有13秒,随着数据量的增大,差距会更加明显。
普通排序:
public class NormalSort {

    private static int  array[] = new int[10000000000];
    private static int  base[] = new int[10];

    public static void main(String[] args) {
        init();
        long t = System.currentTimeMillis();
        sort();
        sysout(t);
    }

    private static void sysout(long t) {
        for(int i =0; i < base.length; i ++){
            System.out.println(base[i]);
        }
        System.out.println("cost time =" + (System.currentTimeMillis()-t));
    }

    private static void init() {
        for(int i =0; i < array.length; i++){
            array[i] = (int)Math.round(Math.random() * array.length);
        }
        for(int i =0; i< base.length;i++){
            base[i] = array[i];
        }
    }

    private static void sort() {
        for(int i =base.length - 1; i < array.length; i++){
            long min = base[0];
            int index = 0;
            for(int j=0; j< base.length; j++){
                if(base[j] < min){
                    index = j;
                    min = base[j];
                }
            }
            if(array[i] > min){
                int tmp = array[i];
                array[i] = base[index];
                base[index] = tmp;
            }
        }
    }
}


堆排序
public class HeapSort {

    private static int array[] = new int[10000000000];

    /**
     * @param args
     */
    public static void main(String[] args) {
        init();
        long t = System.currentTimeMillis();
        sort();
        System.out.println("cost time " + (System.currentTimeMillis() - t));
    }

    private static void init() {
        for (int i = 0; i < array.length; i++) {
            array[i] = (int)Math.round(Math.random() * array.length);
        }
    }

    private static void adjust(int array[], int i, int length) {
        int child;
        int temp;
        for (temp = array[i]; 2 * i + 1 < length; i = child) {
            child = 2 * i + 1;
            if (child < length - 1 && array[child + 1] > array[child])
                ++child;
            if (temp < array[child]) {
                array[i] = array[child];
                array[child] = temp;
            } else
                break;
        }
    }

    private static void sort() {
        for (int i = array.length / 2; i >= 0; --i)
            adjust(array, i, array.length);
        int tmp;
        for (int i = array.length - 1; i >= array.length - 11; --i) {
            tmp = array[i];
            array[i] = array[0];
            array[0] = tmp;
            adjust(array, 0, i);
        }
        for (int i = array.length - 11; i < array.length; i++) {
            System.out.println(array[i]);
        }
    }

}


分享到:
评论

相关推荐

    大数据开发工具包-插件工具-IDEA2017.3.5的scala插件

    总的来说,这个"大数据开发工具包-插件工具-IDEA2017.3.5的scala插件"为Scala开发者提供了一个高效且功能丰富的开发环境,无论是在大数据项目还是其他Scala应用开发中,都能大幅提升开发者的生产力。

    大数据分析师认证-样题--0814-v0.2.pdf

    ` 这个语句查找产品表中所有价格超过3的id和描述。 c) `select id, description from product order by price desc limit 3;` 这个语句与a)类似,不过它是按价格降序排列的。 d) `select id, description, max...

    大数据存储及分层实践-4-3 Delta 技术原理及其在 eBay 的实践.zip

    在当今的数据密集型世界中,大数据存储与管理是至关重要的。本篇内容将深入探讨一种名为“Delta”的技术,它是大数据处理领域的一个创新,特别是在实时分析和数据湖优化方面。Delta 技术的核心在于提供了一种可靠、...

    大数据存储及分层实践-8-4 京东零售海量日志数据处理实践.zip

    在大数据存储及分层实践中,京东零售海量日志数据处理是一个关键环节,它涉及到数据的收集、存储、处理和分析等多个方面。在这个过程中,京东利用先进的技术和架构来应对大规模的数据挑战,实现高效的数据管理和价值...

    Python程序设计(人工智能、大数据)-期末测试试卷12023-12-17.zip

    Python程序设计是现代信息技术领域中的核心技能之一,尤其在人工智能和大数据分析方面,它的重要性不言而喻。这份“Python程序设计(人工智能、大数据)-期末测试试卷12023-12-17.zip”文件包含了多个学生的名字,...

    大数据存储及分层实践-1-4 BookKeeper:Apache Pulsar的存储实现.zip

    - **Entry ID**:每个写入BookKeeper的条目都有一个唯一的Entry ID,这使得数据可寻址,方便读取和查找。 4. **性能优化**: - **零拷贝**:BookKeeper支持零拷贝技术,减少了数据在内核空间和用户空间之间的拷贝...

    大数据存储及分层实践-6-5 PostGIS 在气象业务系统中的实践.zip

    在现代气象业务系统中,大数据处理与存储是关键的一环,尤其在实时预测、气候建模和灾害预警等方面。PostGIS作为一个强大的空间数据库扩展,为处理地理信息系统(GIS)数据提供了高效、灵活的解决方案。本实践案例将...

    大数据存储及分层实践-2-5 Alluxio的元数据同步:设计,实现与优化.zip

    3. 快速查找:Alluxio使用LRU(Least Recently Used)策略缓存元数据,使得最常访问的元数据保持在内存中,从而减少磁盘I/O,提升查询速度。 三、元数据同步优化 1. 数据局部性:Alluxio强调数据和计算的局部性,...

    大数据存储及分层实践-5-2 快手 HDFS 的技术演进.zip

    在大数据存储领域,Hadoop 分布式文件系统(HDFS)是业界广泛应用的基础架构,尤其在快手这样的大型互联网公司中,HDFS的技术演进对于支撑海量数据处理至关重要。本篇内容将深入探讨快手HDFS的技术演进过程,揭示其...

    大数据结构课程设计--哈希表实验报告材料

    在本实验中,我们使用除留余数法构造哈希函数,即将学生姓名折叠处理后,以余数法将其映射到哈希表的索引上。 哈希函数的设计可以影响哈希表的性能,包括查找速度和冲突率。为了提高哈希表的性能,我们需要选择合适...

    大数据存储及分层实践-5-1 MatrixOne 超融合 HTAP 数据库的存储引擎设计.zip

    MatrixOne 是一款高性能的超融合 HTAP(Hybrid Transactional Analytical Processing)数据库,它集成了事务处理和分析处理的能力,旨在解决大数据场景下的实时分析需求。本篇将重点探讨 MatrixOne 的存储引擎设计,...

    大数据学习之旅-02-红黑树源码

    在大数据学习之旅中,我们经常会接触到各种数据结构和算法,其中红黑树作为一种自平衡二叉查找树,因其高效的数据操作性能,在很多大型系统中扮演着重要的角色。本主题将聚焦于红黑树的源码解析,以Zookeeper 3.4.7...

    大数据及其常用组件介绍

    ### 大数据及其常用组件介绍 #### 一、大数据概览 大数据(Big Data)指的是那些超出常规软件工具处理能力范围的数据集合。这类数据不仅规模庞大、增长迅速,还具有多样化的特点,要求采用新的处理模式来提升决策能力...

    Redis大数据之路-dtcc-唐福林

    在《Redis大数据之路》这本书中,作者唐福林对“大数据”的概念进行了深入的探讨,并将其分为几个不同的层面来理解: 1. **线下大数据 vs 线上大数据**:线下的大数据主要指的是非实时的数据处理和分析,例如历史...

    Bitmap大数据查找算法

    在大数据查找算法中,Bitmap可以用来高效地进行数据过滤和查询,这是因为它的空间效率高,查找速度非常快。 首先,Bitmap的核心在于其数据结构。每个bit对应一个唯一的标识,比如在大数据集中的一个唯一ID。当某个...

    福建师范大学精品大数据导论课程系列 (8.7.1)--7.3.2 《Excel数据可视化方法与应用》.rar

    《Excel数据可视化方法与应用》是福建师范大学精品大数据导论课程系列的一部分,专注于利用Excel工具进行数据可视化。在大数据时代,数据可视化已经成为理解和解析复杂数据的关键技能,而Excel作为广泛使用的数据...

    大数据风组合图-61-问卷调查设计表-修改.zip

    "大数据风组合图-61-问卷调查设计表-修改.zip"这个文件很可能是一个用于大数据项目的数据采集工具,具体来说,它是一个经过修改的问卷调查设计表格,存储为.xlsx格式,常见于Excel程序中,用于结构化数据的录入和...

    大数据技术原理与应用【林子雨】上机实验一

    本实验是《大数据技术原理与应用》课程中的第一次实践操作,主要目的是帮助学生熟悉并掌握在大数据处理中最基础的操作系统——Linux的基本命令以及Hadoop的基本操作。这些技能对于后续的大数据处理实验至关重要。 #...

    大数据面试复习----常问问题分析.docx

    在大数据面试中,Java技术是不可或缺的一部分,它涉及到虚拟机、面向对象、多线程、集合框架、反射、内存管理等多个方面。以下是一些相关知识点的详细解释: 1. **HashMap底层原理**:HashMap是基于哈希表实现的,...

    BDMS:大数据系统与大规模数据分析-2021春-homework

    在大数据系统与大规模数据分析的课程中,"BDMS:大数据系统与大规模数据分析-2021春-homework"是一个重要的学习环节,其中的"hw1-基于哈希的分组依据"是第一份作业,它主要关注的是数据处理中的哈希技术和分组策略。...

Global site tag (gtag.js) - Google Analytics