package com.yuzhiyun;import java.util.Arrays;/*** 求一亿个数里面最小的10个数* 首先建立节点个数为10的最大堆,然后考虑每一个新的值,让他和堆顶比较,比堆顶大的元素直接抛弃,如果比堆顶小的数字,让他替换堆顶,然后调整堆。*/
public class MaxTenNumber {public static void main(String[] args) {/**第一个元素0不参与,只是用于占位置,这样的话,只要array[k]>array[2k] && array[k]>array[2k+1]那就是最大堆了,* 此外,这里暂时用20个数代替1亿个*/int[] array={0,1,2,3,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,6,5};//建立建立节点个数为10的最大堆for(int i=10/2;i>=1;i--){adjustHeap(array, i, 10);}//System.out.println(Arrays.toString(array));for(int i=11;i<array.length;i++){//如果这个元素小于堆顶,和堆顶交换,然后重新调整堆if(array[i]<array[1]){swap(array, i, 1);adjustHeap(array, 1, 10);}}System.out.println(Arrays.toString(array));System.out.println("最小的10个数字为:");for(int i=1;i<=10;i++){System.out.print(array[i]+" ");}}/*** 交换* @param array* @param i* @param j*/private static void swap(int[] array, int i, int j) {int tem=array[i];array[i]=array[j];array[j]=tem;}/*** 在以array[head]为根的左右子树是最大堆的前提下把以array[head]为根的树调整为最大堆* @param array* @param head* @param tail*/static void adjustHeap(int[] array,int head,int tail){int root=array[head];int i=2*head;while(i<=tail){int max=array[i];if(i+1<=tail)if(array[i+1]>array[i]){max=array[i+1];i++;}if(root>max)//别手抖写成了return;break;else{array[i/2]=array[i];        }i*=2;}array[i/2]=root;}
}

求一亿个数字里面最小的10个数字相关推荐

  1. java 1亿个数字中_求一亿个数字里面最小的10个数字

    package com.yuzhiyun;import java.util.Arrays;/** * 求一亿个数里面最小的10个数 * 首先建立节点个数为10的最大堆,然后考虑每一个新的值,让他和堆顶 ...

  2. 堆排序--10亿个数字取出最大或者最小的10个数字

    github地址: https://github.com/luolaifa000/phpStudyCode/blob/master/HeapSort.php  <?php function pr ...

  3. linux求斐波那契数列前10项,linux求斐波那契数列的前10项以及总和.

    C语言的函数问题求斐波那契前四十个数,斐波那契数列指的是这样一个数列:0.1.1.2.3.5.8.13.21.--在数学 />#include//the nest function used t ...

  4. 10亿个数中求最大的10个数字

    10亿个数中求最大的10个数字 应用场景 比如求10亿个数中的最大的前10个数,此时构建只有10个元素的小顶堆,如果比堆顶小,则不处理:如果比堆顶大,则替换堆顶,然后依次下沉到适当的位置. 比如求10 ...

  5. Java黑皮书课后题第7章:7.10(找出最小元素的下标)使用下面的方法头编写一个方法,求出一个整数数组中的最小元素下标。编写测试程序,提示用户输入10个数字,调用这个方法返回最小值的下标(多个则最小

    7.10(找出最小元素的下标)使用下面的方法头编写一个方法,求出一个整数数组中的最小元素下标.编写测试程序,提示用户输入10个数字,调用这个方法返回最小值的下标(多个则返回最小的下标) 题目 题目描述 ...

  6. Java黑皮书课后题第7章:7.9(找出最小元素)使用下面的方法头编写一个方法,求出一个整数数组中的最小元素。编写测试程序,提示用户输入10个数字,调用这个方法返回最小值,并显示这个最小值

    7.9(找出最小元素)使用下面的方法头编写一个方法,求出一个整数数组中的最小元素.编写测试程序,提示用户输入10个数字,调用这个方法返回最小值,并显示这个最小值 题目 题目描述与运行示例 破题 代码 ...

  7. C语言实现素数和回文数字判断(并求大于某个自然数n的最小的既是素数又是回文的数)

    目录 判断素数函数 回文数字判断函数 求大于某个自然数n的最小的既是素数又是回文的数 1.判断素数函数 一.思路 素数,又称质数,是指在大于1的自然数中,除了1和它本身以外不能被其它数整除的数.最小的 ...

  8. 100亿数据找出最大的1000个数字的4种方法

    100亿数据找出最大的1000个数字 面试题:解决的四种方法: 方法一:全排序法 1.最容易想到的方法是将数据全部排序.该方法并不高效,因为题目的目的是寻找出最大的10000个数即可,而排序却是将所有 ...

  9. 2014百度面试题目---“求比指定整数大且最小的不重复数”解答

    题目:给定任意一个正整数,求比这个数大且最小的"不重复数","不重复数"的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数. 代码: #incl ...

最新文章

  1. python数据库编程 代码 源码_Python可以这样学_Python教程
  2. 程序员版本管理知识 Git 详细整理
  3. 多功能监护系统开发与设计
  4. Halcon算子翻译——default
  5. 微服务架构案例(01):项目技术选型简介,架构图解说明
  6. 多点测试:while的写法
  7. 打开旧Flutter项目说:Your Flutter application is created using an older version of the Android embedding
  8. 大神带你实现 NLP 从入门到获奖,还有免费算力可以薅
  9. 解决wordpress前后台非常卡的几个方法
  10. 【Altium Designer】PCB如何生成Gerber文件
  11. win10怎么将计算机放桌面壁纸,windows10自带壁纸在哪里_win10电脑自带的桌面壁纸保存在哪...
  12. 诛仙手游-各属性道法换算
  13. 计算机电子科技生产质量标准,SJT9527-1993微型数字电子计算机质量分等标准.pdf...
  14. 别不信,小宝宝爱盯着妈妈看原来跟大脑发育有关
  15. 【追剧达人JAVA修复版】苹果CMS10原生APP修改版 影视APP源码附安装教程
  16. 图像去噪——Neighbor2Neighbor: Self-Supervised Denoising from Single Noisy Images
  17. 苹果手机投影_投影仪连手机的两种方式介绍
  18. Nat. Aging︱老药新用发现——西地那非有助于预防或治疗老年痴呆
  19. 什么是 相关子查询 和 非相关子查询 ?
  20. 【115期分享】4款小清新PPT模板免费下载

热门文章

  1. 把VMware虚拟机从一台电脑复制到另一台电脑
  2. 2016年川师大软件工程本科生博客地址列表
  3. 矛盾依旧脱欧协议过关难 欧盟认为英将延后脱欧
  4. 教你PDF复制文字的方法
  5. 河南大学2019计算机专业录取分数线,河南大学优势热门专业分析及2019、2018、2017年各省录取分数线...
  6. power bi 度量值SUMX(FILTER和EARLIER结合
  7. OllyDbg使用方法
  8. java力矩_机器人单关节力矩控制(前馈+反馈)
  9. 深度!用“极速统一”,开启金融行业数据分析新范式
  10. 2017语义分割综述