算法和数据结构---排序---优先级队列
优先级队列与堆相似,此处用小根堆模拟优先级队列。
当前最小的值存在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[c])//比较左右孩子节点大小
c++;//如果右孩子节点比左孩子节点小
if(x[i]<=x[c])
break;
swap(x[c];x[i]);
}
return t;
}
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号