算法导论-优先级队列-C语言
2014-09-07 15:51
369 查看
#define MIN_INT (-65535) int heapSize; void exchange(int array[],int a, int b); void maxHeapify(int array[], int i); int main() { printf("Hello world!\n"); return 0; } void maxHeapify(int array[], int i) { int l = i * 2 + 1; int r = (i + 1) * 2; int largest = i; if(l < heapSize && array[l] > array[i]) { largest = l; } if(r < heapSize && array[r] > array[largest]) { largest = r; } if(largest != i) { exchange(array,largest,i); heapHeapify(array,largest,heapSize); } } int heapMaxMum(int array[]) { return array[0]; } int heapExtractMax(int array[]) { int max; if(heapSize < 1) { return -1;//Error heap overflow } max = array[0]; array[0] = array[heapSize - 1]; maxHeapify(array,0,heapSize - 1); return max; } void heapIncreaseKey(int array[],int i,int key) { int parent; if(array[i] < key) { return;//Error,key must be larger than array[i] } array[i] = key; parent = (i - 1) / 2; while(i > 0 && array[parent] < key) { exchange(array,parent,i); i = parent; parent = (i - 1) / 2; } } void maxHeapInsert(int array[],int key) { array[heapSize] = MIN_INT; heapIncreaseKey(array,heapSize,key); ++heapSize; } // exchange content of position a and b in array void exchange(int array[],int a, int b) { int temp; temp = array[a]; array[a] = array[b]; array[b] = temp; }
相关文章推荐
- 读《算法导论》我来C语言实现(3)——堆排序和优先级队列
- 《算法导论》第六章之堆和优先级队列相关算法C语言实现
- 《算法导论》学习总结——第二部分2优先级队列
- 《算法导论》笔记--优先级队列
- 算法导论-优先级队列
- 《算法导论》第六章----优先级队列(代码实现+部分练习)
- 《算法导论》 6.5优先级队列
- 算法导论:堆排序的应用---优先级队列
- 数据结构之带优先级的队列(C语言实现)
- 《算法导论》第6章 堆排序 (2)优先级队列
- 《算法导论》读书笔记之第6章 优先级队列
- C语言实现的优先级队列
- 《算法导论》第6章 堆排序 (2)优先级队列
- 算法导论笔记(二) : 优先级队列
- 算法导论第6章代码之优先级队列
- 《算法导论》第6章 堆排序 (2)优先级队列
- 《算法导论》第六章-优先级队列(伪代码)
- 《算法导论》第6章 堆排序 (2)优先级队列
- C语言实现优先级队列——priqueue
- 《算法导论》第六章----优先级队列(代码实现+部分练习)