【数据结构】堆
堆
向下调整,时间复杂度为O(logn)
void downAdjust(int low,int high){
//对heap[]数组,在[low,high]的范围内向下调整
int i=low,j=i*2;
while(j<=high){
if(j+1<=high && heap[j+1]<heap[j]){
j=j+1;
}
if(heap[j]>heap[i]){
swap(heap[i],heap[j]);
i=j;
j=j*2;
}else{
break;
}
}
}
建堆
void creatHeap(){
for(int i=n/2;i>=1;--i){
downAdjust(i,n);
}
}
删除堆顶元素
void deleteTop(){
heap[1]=heap[n--];
downAdjust(1,n);
}