首页 > 编程知识 正文

堆的构建过程,构建堆的两种方法

时间:2023-05-04 15:23:22 阅读:283629 作者:4681

/*实现堆结构查看 提交 统计 提问总时间限制: 3000ms 内存限制: 65535kB描述定义一个数组,初始化为空。在数组上执行两种操作:1、增添1个元素,把1个新的元素放入数组。2、输出并删除数组中最小的数。使用堆结构实现上述功能的高效算法。输入第一行输入一个整数t,代表测试数据的组数。对于每组测试数据,第一行输入一个整数n,代表操作的次数。每次操作首先输入一个整数type。当type=1,增添操作,接着输入一个整数u,代表要插入的元素。当type=2,输出删除操作,输出并删除数组中最小的元素。1<=n<=100000。输出每次删除操作输出被删除的数字。样例输入251 11 21 32241 51 11 72样例输出121*/#include<iostream>#include<algorithm>#include<queue>using namespace std;struct cmp{bool operator()(int a, int b){return a > b;}};int main(){int t,n,type,num;cin >> t;for (int i = 0; i < t; ++i){cin >> n;priority_queue<int,vector<int>,cmp> pQueue;for (int j = 0; j < n; ++j){cin >> type;if (type == 1){cin >> num;pQueue.push(num);}else{cout << pQueue.top() << endl;pQueue.pop();}}}return 0;}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。