第K大的数字

public class KthLargestNumber {/*** 寻找第k大的元素* @param array  待调整的堆* @param k  第几大*/public static int findKthLargestNumber(int[] array, int k) {//1.用前k个元素构建最小堆buildHeap(array, k);//2.继续遍历数组,和堆顶比较for (int i = k; i < array.length; i++) {if (array[i] > array[0]) {array[0] = array[i];downAdjust(array, 0, k);}}//3.返回堆顶元素return array[0];}/*** 构建堆* @param array  待调整的堆* @param length  堆的有效大小*/private static void buildHeap(int[] array, int length) {// 从最后一个非叶子结点开始,依次下沉调整for (int i = (length - 2) / 2; i >= 0; i--) {downAdjust(array, i, length);}}/*** 下沉调整* @param array     待调整的堆* @param index    要下沉的结点* @param length    堆的有效大小*/private static void downAdjust(int[] array, int index, int length) {// temp保存父结点值,用于最后的赋值int temp = array[index];int childIndex = (2 * index) + 1;while (childIndex < length) {// 如果有右孩子,且右孩子小于左孩子的值,则定位到右孩子if (((childIndex + 1) < length) &&(array[childIndex + 1] < array[childIndex])) {childIndex++;}// 如果父结点小于任何一个孩子的值,直接跳出if (temp <= array[childIndex]) {break;}//无需真正交换,单向赋值即可array[index] = array[childIndex];index = childIndex;childIndex = (2 * childIndex) + 1;}array[index] = temp;}public static void main(String[] args) {int[] array = new int[] { 7, 5, 15, 3, 17, 2, 20, 24, 1, 9, 12, 8 };System.out.println(findKthLargestNumber(array, 5));}
}

《漫画算法2》源码整理-7 第K大的数字相关推荐

  1. 《漫画算法》源码整理-7

    MyBitmap public class MyBitmap {//每一个word是一个long类型元素,对应64位二进制private long[] words;//bitmap的位数大小priva ...

  2. 《漫画算法》源码整理-5 排序算法

    冒泡排序 import java.util.Arrays;public class BubbleSort {public static void sort(int array[]){int tmp = ...

  3. 《漫画算法》源码整理-6

    判断链表有环 public class LinkedListCycle {/*** 判断是否有环* @param head 链表头节点*/public static boolean isCycle(N ...

  4. 《漫画算法》源码整理-4 大顶堆 小顶堆 优先队列

    堆操作 import java.util.Arrays;public class HeapOperator {/*** 上浮调整* @param array 待调整的堆*/public static ...

  5. 《漫画算法》源码整理-3 二叉树遍历

    二叉树前序 中序 后序 遍历 import java.util.Arrays; import java.util.LinkedList;public class BinaryTreeTraversal ...

  6. 《漫画算法》源码整理-2 数组 链表 队列

    数组操作 public class MyArray {private int[] array;private int size;public MyArray(int capacity){this.ar ...

  7. 《漫画算法》源码整理-1 时间复杂度 空间复杂度

    时间复杂度 public class TimeComplex {void eat1(int n){for(int i=0; i<n; i++){;System.out.println(" ...

  8. 算法设计--查找无序数组中第K大的数字

    给出一个数组,要求查找出这个数组中按顺序排第K大的数字. 思路:利用快速排序的思想,把数组中的元素分治,并计算中间值的位置,如果是K,则这个数就是第K大的数字,如果比K小,那么再次利用快速排序分治中值 ...

  9. java计算机毕业设计漫画网站系统源码+系统+数据库+lw文档+mybatis+运行部署

    java计算机毕业设计漫画网站系统源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计漫画网站系统源码+系统+数据库+lw文档+mybatis+运行部署 本源码技术栈: 项目 ...

最新文章

  1. 进程的同步、互斥以及PV原语
  2. 使用jvisualvm.exe 的Btrace插件监控应用程序
  3. Silverlight DataGrid超出列表高度时自动滚屏
  4. POJ 1679 The Unique MST(次小生成树)
  5. 【报错笔记】数据类型转换时报错:Request processing failed;nested exception is java.lang.NumberFormatException:...
  6. [react] 在React中声明组件时组件名的第一个字母必须是大写吗?为什么?
  7. k8s核心技术-Service概述_Service如何实现负载均衡_提供虚拟IP_以及Po的IP注册和发现---K8S_Google工作笔记0031
  8. tcp 压力 测试 软件,强大的TcpServer压力测试工具及源码(附突破连接限制的方法和工具)...
  9. 《最受欢迎的男友职业排行榜Top10》
  10. 第1节 中华人民共和国网络安全法
  11. 抖音互关源码 E4A源码含数据库后台程序搭建可用
  12. 不得不知 云计算入门必备的60条术语
  13. 什么是视频比特率:完整指南
  14. 【2022-05-31】JS逆向之易企秀
  15. Wordcount()--ASP字数计算函数
  16. Echart + 百度地图实现区域聚合(Vue版)
  17. Spring Boot 参考文档
  18. 仓库码放要求_仓库管理制度规则
  19. Kafka之四:Kafka与Streaming集成
  20. iOS - CoreData了解和简单应用

热门文章

  1. Docker源码分析(五):Docker Server的创建
  2. 原理+实践,Kafka MirrorMaker使用与性能调优全解析
  3. 一个完整的微服务系统,应该包含哪些功能?--转
  4. struts深入原理之RequestProcessor与xml
  5. 开发团队如何完成一个项目?
  6. 以太坊发token教程
  7. 深度 | 宽客玩转华尔街:谁才是新的“华尔街之王”?
  8. 实现主成分分析和白化
  9. 深入理解分布式技术 - 先更新数据库,还是先更新缓存
  10. Redis进阶-分布式存储 Sequential partitioning Hash partitioning