void HeapFixdown(int a[], int i, int n) {
int j = 2 * i + 1;
while (j < n) {
if (j + 1 < n && a[j] > a[j + 1])
j++;
if (a[i] < a[j])
break;
swap(a[i], a[j]);
i = j;
j = 2 * i + 1;
}
}
void MakeMinHeap(int a[], int n) {
for (int i = n/2 - 1; i >= 0; i--)
HeapFixdown(a, i, n);
}
int main() {
int a[] = {9,12, 17, 30, 50, 20 ,60, 65, 4 ,49};
MakeMinHeap(a, 10);
for (int i = 0; i < 10; i++)
cout << a[i] << endl;
数据结构与算法--堆
最新推荐文章于 2024-02-02 03:00:57 发布