heap堆
2025-09-13 19:10:30
发布于:浙江
#include<bits/stdc++.h>
using namespace std;
int heap[10005],size;
void push(int x){
heap[++size]=x;
int son=size,fa;
while(son>1){
fa=son/2;
if(heap[fa]>=heap[son]) break;
swap(heap[fa],heap[son]);
son=fa;
}
}
void pop(){
heap[1]=heap[size--];
int fa=1,son;
while(fa*2<=size){
son=fa*2;
if(son+1<=size && heap[son+1]>heap[son]) son++;
if(heap[fa]>=heap[son]) break;
swap(heap[fa],heap[son]);
fa=son;
}
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
int x;
cin>>x;
push(x);
}
for(int i=1;i<=n;i++) cout<<heap[i]<<' ';
return 0;
}
这里空空如也
有帮助,赞一个