当前位置:网站首页>Binary heap implementation (priority queue implementation)
Binary heap implementation (priority queue implementation)
2022-07-05 03:20:00 【Ape baby】
package heap;
/** * @author: huzc * @date: 2022/2/13 15:28 * @description: Priority queue implementation */
public class MaxPQ<K extends Comparable<K>>{
private K[] array;
// Element number
private int n = 0;
public MaxPQ(int cap) {
array = (K[]) new Comparable[cap + 1];
}
public K max() {
return array[1];
}
private void swim(int k) {
// If you float to the top of the pile , You can't go up again
while(k > 1 && less(parent(k),k)) {
// If the first k The elements are bigger than the upper layer
// take k Change it
swap(parent(k),k);
k = parent(k);
}
}
private void sink(int k) {
// If it sinks to the bottom of the pile , It doesn't sink
while (left(k) <= n) {
// Let's assume that the left node is larger
int older = left(k);
// If there is a node on the right , Compare the size
if (right(k) <= n && less(older, right(k)))
older = right(k);
// node k Older than both children , You don't have to sink
if (less(older, k)) break;
// otherwise , Does not conform to the structure of the largest heap , sinking k node
swap(k, older);
k = older;
}
}
public void insert(K e) {
n++;
// Add new elements to the end
array[n] = e;
// And let it float up to the right position
swim(n);
}
public K delMax() {
// The top of the largest heap is the largest element
K max = array[1];
// Change the biggest element to the last , Delete
swap(1,n);
array[n] = null;
// Give Way array[1] Sink to the right position
sink(1);
return max;
}
private void swap(int i, int j) {
K temp = array[i];
array[i] = array[j];
array[j] = temp;
}
private boolean less(int i, int j) {
return array[i].compareTo(array[j]) < 0;
}
public int parent(int root) {
return root / 2;
}
public int left(int root) {
return root * 2;
}
public int right(int root) {
return root * 2 + 1;
}
}
边栏推荐
- Mongodb common commands
- Flume configuration 4 - customize mysqlsource
- Voice chip wt2003h4 B008 single chip to realize the quick design of intelligent doorbell scheme
- Apache Web page security optimization
- About MySQL database connection exceptions
- this+闭包+作用域 面试题
- Anchor free series network yolox source code line by line explanation Part 2 (a total of 10, ensure to explain line by line, after reading, you can change the network at will, not just as a participan
- 问下,这个ADB mysql支持sqlserver吗?
- Azkaban安装部署
- Returns the lowest common ancestor of two nodes in a binary tree
猜你喜欢

Class inheritance in C #

this+闭包+作用域 面试题

Qrcode: generate QR code from text

Accuracy problem and solution of BigDecimal

Talk about the SQL server version of DTM sub transaction barrier function

The perfect car for successful people: BMW X7! Superior performance, excellent comfort and safety
![[system security] ten thousand words summary system virtualization container bottom layer principle experiment](/img/c6/1bdb29a0acb0739f67b882fa6b3b47.jpg)
[system security] ten thousand words summary system virtualization container bottom layer principle experiment

Pdf things

Pytest (4) - test case execution sequence

Ubantu disk expansion (VMware)
随机推荐
How to learn to get the embedding matrix e # yyds dry goods inventory #
Tiny series rendering tutorial
The perfect car for successful people: BMW X7! Superior performance, excellent comfort and safety
Voice chip wt2003h4 B008 single chip to realize the quick design of intelligent doorbell scheme
单项框 复选框
[groovy] string (string injection function | asBoolean | execute | minus)
Design and implementation of campus epidemic prevention and control system based on SSM
为什么腾讯阿里等互联网大厂诞生的好产品越来越少?
Pat grade a 1119 pre- and post order traversals (30 points)
Yyds dry goods inventory intelligent fan based on CC2530 design
Design and implementation of community hospital information system
Watch the online press conference of tdengine community heroes and listen to TD hero talk about the legend of developers
About MySQL database connection exceptions
1. Five layer network model
Azkaban安装部署
看 TDengine 社区英雄线上发布会,听 TD Hero 聊开发者传奇故事
[daily problem insight] Li Kou - the 280th weekly match (I really didn't know it could be so simple to solve other people's problems)
Design and practice of kubernetes cluster and application monitoring scheme
8. Commodity management - commodity classification
LeetCode 237. Delete nodes in the linked list