MaxHeap
来源:互联网 发布:创维电视使用网络电视 编辑:程序博客网 时间:2024/06/09 21:18
//最大堆,数组实现完全二叉堆
public class MaxHeap {
int[] data;// data[0]为最大堆的数量
int capacity;//最大堆的容量
public MaxHeap(int capacity) { this.capacity = capacity; data = new int[capacity + 1]; data[0] = 0;}//heapfiypublic MaxHeap(int[] arr) { this.capacity = arr.length; data = new int[arr.length + 1]; data[0] = arr.length; for (int i = 0; i < arr.length; i++) data[i + 1] = arr[i];}public static void main(String[] args) { MaxHeap heap = new MaxHeap(10); int size = heap.size(); boolean bool = heap.isEmpty(); heap.insert(15); heap.insert(12); heap.insert(11); heap.insert(16); for (int j = 1; j <= heap.data[0]; j++) System.out.println(heap.data[j]); int max = heap.extractMax(); for (int j = 1; j <= heap.data[0]; j++) System.out.println(heap.data[j]);}public int extractMax() { if (data[0] > 0) { int max = data[1]; data[1] = data[data[0]]; data[0]--; shiftDown(1); return max; } return Integer.MAX_VALUE;}public void shiftDown(int i) { while (i * 2 <= data[0]) { int j = i * 2; if (j + 1 <= data[0]) if (data[j + 1] > data[j]) j += 1; if (data[i] < data[j]) { swap(i, j); i = j; } else break; }}public void insert(int i) { if (capacity >= data[0] + 1) { data[++data[0]] = i; shiftUp(data[0]); }}private void shiftUp(int i) { while (i > 1 && data[i / 2] < data[i]) { swap(i / 2, i); i /= 2; }}private void swap(int i, int j) { data[i] = data[i] ^ data[j]; data[j] = data[i] ^ data[j]; data[i] = data[i] ^ data[j];}public boolean isEmpty() { return data[0] == 0;}public int size() { return data[0];}
}
阅读全文
0 0
- MaxHeap
- MaxHeap
- 扩大 weka maxheap(java maxheap)
- java数据结构之MaxHeap
- Chapter 9-MaxHeap
- 最大堆MaxHeap源码
- 考研数据结构----MaxHeap
- maxHeap & minHeap to find median
- MinHeap MaxHeap using Queue (PriorityQueue)
- 最大堆maxheap的一个实现
- PriorityQueue里面的的minheap和maxheap
- 最大堆MaxHeap和最小堆MinHeap的实现
- [C++]数据结构:最大堆MaxHeap的创建与使用
- heapsort/minheap/maxheap/堆排序/最大堆/最小堆
- [C++]数据结构:最大堆MaxHeap的创建与使用
- Redis无法启动You may fix this problem by either reducing the size of the Redis heap with the --maxheap
- servlet中的相对路径和绝对路径 及/, ./, ../的区别
- LCS
- eclipse报内存溢出错误,修改eclipse.ini配置不生效问题,可能与环境变量配置有关
- LIS
- IAAS、PAAS、SAAS 的区别
- MaxHeap
- NQueen
- 03java基础api2
- OJ2755神器的口袋
- Android手机号、串号获取
- sql server打开电脑后发现数据库找不到了
- POJ1163三角形
- OpenCV截取图像ROI并保存于指定路径
- POJ2694逆波兰