5、1. void Initialize(T a[], int size, int ArraySize); 22. 23. private: 24. int CurrentSize, MaxSize; 25. T *heap; // element array 26.}; 1. 2.template 3.MaxHeap::MaxHeap(int MaxHeapSize) 4.{// Max heap constructor. 5. MaxSize = M
6、axHeapSize; 6. heap = new T[MaxSize+1]; 7. CurrentSize = 0; 8.} 9. 10.template 11.MaxHeap& MaxHeap::Insert(const T& x) 12.{// Insert x into the max heap. 13. if (CurrentSize == MaxSize) 14. { 15. cout<<"no space!"<
7、 return *this; 17. } 18. 19. // 寻找新元素x的位置 20. // i——初始为新叶节点的位置,逐层向上,寻找最终位置 21. int i = ++CurrentSize; 22. while (i != 1 && x > heap[i/2]) 23. { 24. // i不是根节点,且其值大于父节点的值,需要继续调整 25. heap[i] = heap[i/2]; // 父节点下降 26. i /= 2;