摘要: 优先级队列与堆相似,此处用小根堆模拟优先级队列。当前最小的值存在x[1]。insert 操作void insert(T t){int i,p;x[++n]=t;//把t插入到x[n]for(i=n;i>1&&x[p=i/2]>x[i];i=p)//如果父节点比子节点大swap(x[p],x[i]);//交换两元素}查找并删除当前的最小值T extractmin(){int i,c;T t=x[1];x[1]=x[n--]//替换x[1]为x[n]for(i=1;(c=2*i)<=n;i=c){if(c+1<=n&&x[c+1]<x[ 阅读全文
posted @ 2012-07-17 22:47 代码改变未来 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 大根堆的调整:// array是待调整的堆数组,i是待调整的数组元素的位置,nlength是数组的长度void HeapAdjust(int array[], int i, int nLength){ int nTemp=array[i]; for (int j = 2 * i + 1 ; j < nLength; j = j * 2 + 1) { // 沿key较大的孩子结点向下筛选 if (j < n-1 && (array[j+1] > array[j])) ++j;//j为key较大的记录的下标 if (nTemp < array[j]) { a 阅读全文
posted @ 2012-07-17 22:26 代码改变未来 阅读(164) 评论(0) 推荐(0) 编辑