当前位置:网站首页>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;
}
}
边栏推荐
- IPv6 experiment
- 单项框 复选框
- SPI and IIC communication protocol
- [micro service SCG] 33 usages of filters
- Daily question 2 12
- 2021 Li Hongyi machine learning (3): what if neural network training fails
- Pat class a 1162 postfix expression
- The perfect car for successful people: BMW X7! Superior performance, excellent comfort and safety
- 返回二叉树中两个节点的最低公共祖先
- Acwing game 58 [End]
猜你喜欢
[105] Baidu brain map - Online mind mapping tool
Sqoop command
This + closure + scope interview question
SQL injection exercise -- sqli Labs
TCP security of network security foundation
单项框 复选框
How to learn to get the embedding matrix e # yyds dry goods inventory #
Yyds dry goods inventory intelligent fan based on CC2530 design
El select, El option drop-down selection box
Asp+access campus network goods trading platform
随机推荐
Pat class a 1162 postfix expression
Kubernetes - identity and authority authentication
[groovy] loop control (number injection function implements loop | times function | upto function | downto function | step function | closure can be written outside as the final parameter)
Utilisation simple de devtools
Hot knowledge of multithreading (I): introduction to ThreadLocal and underlying principles
2021 Li Hongyi machine learning (2): pytorch
ELFK部署
The perfect car for successful people: BMW X7! Superior performance, excellent comfort and safety
1.五层网络模型
LeetCode 234. Palindrome linked list
What is the most effective way to convert int to string- What is the most efficient way to convert an int to a String?
Port, domain name, protocol.
Comparison of advantages and disadvantages between platform entry and independent deployment
Is there any way to change the height of the uinavigationbar in the storyboard without using the UINavigationController?
1. Five layer network model
[groovy] string (string type variable definition | character type variable definition)
Pat grade a 1119 pre- and post order traversals (30 points)
Linux安装Redis
Basic authorization command for Curl
Performance of calling delegates vs methods