描述 定义一个数组,初始化为空。在数组上执行两种操作: 1、增添1个元素,把1个新的元素放入数组。 2、输出并删除数组中最小的数。 使用堆结构实现上述功能的高效算法。 输入 第一行输入一个整数t,代表测试数据的组数。 对于每组测试数据,第一行输入一个整数n,代表操作的次数。 每次操作首先输入一个整数type。 当type=1,增添操作,接着输入一个整数u,代表要插入的元素。 当type=2,输出删除操作,输出并删除数组中最小的元素。 1<=n<=100000。 输出 每次删除操作输出被删除的数字。
时间: 2023-07-14 20:13:58 浏览: 308
题目分析:
题目要求我们使用堆结构实现一个数组,可以进行插入和删除最小值的操作。对于这种问题,我们可以使用小根堆来解决。具体来说,我们可以使用一个数组来存储堆中的元素,然后使用一个变量来记录堆的大小。在插入操作时,我们可以将新的元素插入到堆的末尾,然后通过上滤操作将其调整到合适的位置。在删除操作时,我们可以将堆顶元素与堆末尾的元素交换,然后通过下滤操作将新的堆顶元素调整到合适的位置。
代码实现:
下面是使用 C++ 语言实现的代码:
阅读全文