实现代码:
#include<iostream>
using namespace std;
void HeapAdjust(int* nums, int idx, int n) {
nums[0] = nums[idx];
for (int i = 2 * idx;i <= n;i *= 2) {
if (i<n && nums[i]>nums[i + 1])
i++;
if (nums[i] >= nums[idx]) {
break;
}
else {
nums[idx] = nums[i];
idx = i;
}
}
nums[idx] = nums[0];
}
void HeapInsert(int *nums,int n,int value) {
nums[n] = value;
while (n > 1) {
int pre = n / 2;
if (nums[pre] <= nums[n]) {
break;
}
else {
swap(nums[pre], nums[n]);
}
n /= 2;
}
}
void HeapDelete(int* nums, int idx, int n) {
swap(nums[idx], nums[n]);
HeapAdjust(nums, idx, n - 1);
}
int main() {
int nums[155],n;
cin >> n;
for (int i = 1;i <= n;i++) {
cin >> nums[i];
}
HeapInsert(nums, n + 1, 13);
n++;
cout << "插入元素13后的序列为:";
for (int i = 1;i <= n;i++) {
cout << nums[i] << " ";
}
cout << endl;
HeapDelete(nums, 2, n);
n--;
cout << "删除元素13后的序列为:";
for (int i = 1;i <= n;i++) {
cout << nums[i] << " ";
}
cout << endl;
return 0;
}
运行结果:
