min-priority queue
来源:互联网 发布:雅思备考攻略 知乎 编辑:程序博客网 时间:2024/06/11 08:24
根据算法导论章节实现。
#include "2.h"#include <stdio.h>int g_heapsize;int g_length;void min_heap_heapify(int *data, int i){int left = 2 * i;int right = 2 * i + 1;int min;if(left <= g_heapsize && data[left] < data[i]){min = left;}else{min = i;}if(right <= g_heapsize && data[right] < data[min]){min = right;}if(min != i){int tmp = data[i];data[i] = data[min];data[min] = tmp;min_heap_heapify(data, min);}}void min_heap_init_length(int length){g_length = length;}void min_heap_build(int *data){g_heapsize = g_length;int i;for(i = g_length / 2; i > 0; i--){min_heap_heapify(data, i);}}void min_heap_decrease_key(int *data, int i, int key){if( key > data[i]){printf("key should not be larger than data[%d]\n", i);return;}data[i] = key;int parent = i / 2;while( i > 1 && data[parent] > key){int tmp = data[i];data[i] = data[parent];data[parent] = tmp;i = parent;parent = i / 2;}}void min_heap_insert(int *data, int key){g_heapsize = g_heapsize + 1;data[g_heapsize] = 1 << 31 - 1;min_heap_decrease_key(data, g_heapsize, key); }int min_heap_extract(int *data){min_heap_build(data);int min = data[1];data[1] = data[g_heapsize];g_heapsize = g_heapsize -1;min_heap_heapify(data, 1);return data[1];}int main(int argc, char **argv){int data[] = {-1, 234, 23, 15, 67, 5, 88, 100, 50};min_heap_init_length(sizeof(data)/sizeof(data[0])-1);int min = min_heap_extract(data);min_heap_insert(data, 4);return 0;}
0 0
- min-priority queue
- min heap priority queue 最小堆实现的优先队列
- [LeetCode] Merge k Sorted List (priority queue, min heap, comparator)
- priority queue
- 算法导论(min-priority-queue 最小优先队列的部分实现)
- stl priority queue
- Priority Queue Version 0.1
- A Priority Queue
- Algorithm episode --priority queue
- Priority Queue 源码分析
- 优先级队列 priority queue
- priority queue 优先队列
- Heap & Priority Queue
- priority queue 优先队列
- Dijkstra with priority queue
- Dijkstra with priority queue
- poj3614 priority queue
- deck & Priority Queue
- 安卓驱动开发之-(二)硬件访问服务_编写系统代码
- android-gradle-深入浅出四:自定义构建过程之配置manifest
- 计算高斯积分与插值
- unity3d 在mac 下命令打包发布IPA包
- xss攻击汇总
- min-priority queue
- Codeforces Round #340 (Div. 2)-D. Polyline
- android-gradle-深入浅出-五:build type
- Item10 Prefer scoped enums to unscoped enums
- 认识css样式(垂直居中-父元素高度确定的多行文本)
- 检测某股价的线性趋势
- Gradle Tips#1-tasks
- 10倍效率的程序员的好习惯,你有几个?【转载 JAVA那些事】
- Gradle Tips#2-语法