• 2024-07-15大根堆的实现
    publicstaticvoidswap(int[]arr,inti,intj){arr[i]=arr[i]^arr[j];arr[j]=arr[i]^arr[j];arr[i]=arr[i]^arr[j];}//建一个大根堆publicstaticclassMyMaxHeap{privateint[]heap;privatefinalintlimit;privateinthea
  • 2024-06-20【LeetCode】215.数组中的第K个最大元素
    题目描述给定整数数组nums和整数k,请返回数组中第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。你必须设计并实现时间复杂度为O(n)的算法解决此问题。示例1:输入:[3,2,1,5,6,4],k=2输出:5示例2:输入:[3,2
  • 2023-12-17堆结构和堆排序
    堆堆是一种特殊的完全二叉树,其他语言中的优先级队列就是堆。堆分为大根堆和小根堆,大根堆即对于每一颗树,它的父亲节点的值,一定大于它的孩子节点的值,左右节点的值不用管它的顺序。小根堆同理。堆的实现通常是用数组实现的,那么对于每一个节点在数组中怎么找到它的父节点和它的左右
  • 2023-11-012023年11月第一周学习总结
    排序归并排序本质是将多个序列进行合并,和快排一样也用的是分而治之的思想,并且它也是基于比较里面较快的算法且能保持稳定性的算法。那么怎么将两个序列合并呢?(假设左右两边已经有序)开辟一个和数组一样大的辅助数组,再设定两个指针,第一个指针指向第一个序列的开头,第二个指针
  • 2023-08-01找出乱序数组第k大的数字(堆排序专场)
    使用堆排序来解决《乱序数组第k大的数字》先放上代码(虽然leetcode要求O(n),但是堆排序是O(nlogn))`classSolution{publicintfindKthLargest(int[]nums,intk){intheapSize=nums.length;buildHeap(nums,heapSize);for(inti=nums.length-1;i>=nums.length-
  • 2023-07-104.堆
    从0开始:左孩子 2*i+1右孩子 2*i+2父    (i-1)/2从1开始:左孩子 2*i           (i<<1)右孩子 2*i+1         (i<<1|1)父     i/2           (i>>1)      从1开始的比较容
  • 2023-02-07堆排序
    leetcode-FindKthLargestpublicclassKthLargest{publicstaticvoidmain(String[]args){System.out.println(findKthLargest(newint[]{3,2,1,5,6,4}
  • 2022-12-31实现一个大根堆。 包括添加方法push(int value),弹出方法pop()。
    packageclass06;importjava.util.Comparator;importjava.util.PriorityQueue;/***实现一个大根堆。*包括添加方法push(intvalue),弹出方法pop()。*弹出
  • 2022-11-28与堆和堆排序相关的问题
    与堆和堆排序相关的问题作者:Grey原文地址:博客园:与堆和堆排序相关的问题CSDN:与堆和堆排序相关的问题堆结构说明堆结构就是用数组实现的完全二叉树结构,什么是完全二叉
  • 2022-10-12Java Heap
    堆堆是一种基于树的数据结构,是一种完全二叉树,堆中的所有的节点都按照特定的顺序排列。在堆数据结构中,如果任意父节点的值都大于其子节点,则会产生一个大顶堆;反之,如果任
  • 2022-08-19堆排序 与 比较器
    堆排序假如给你一无序的数组,经过堆排序获得一组降序的数组1、首先我们将数组遍历,进行heapInsert,变为一个大根堆,建立堆的过程方法一:正序遍历+heapInsertO(N*logN)当需