#include<string>
#include<iostream>
#include<vector>
using namespace std;
class Heap{
public:
int heap_size;
vector<int> heap;
void maxHeap(vector<int>&heap,int i);
void buildMaxHeap(vector<int>&heap);
};
void Heap::maxHeap(vector<int>&heap,int i){
int l = 2*i;
int r = 2*i+1;
int largest;
if(l<=heap_size&&heap[l]>heap[i])
largest=l;
else largest = i;
if(r<=heap_size&&heap[r]>heap[largest])
largest = r;
if(largest!=i){
swap(heap[largest],heap[i]);
maxHeap(heap,largest);
}
}
void Heap::buildMaxHeap(vector<int>&heap){
for(int i=heap_size/2;i>0;i--)
maxHeap(heap,i);
}
int main(){
Heap h;
int cmd;
int a[10]={16,4,10,14,7,9,3,2,8,1};
h.heap.push_back(0);
for(int i=0;i<10;i++)
h.heap.push_back(a[i]);
h.heap_size = 10;
h.buildMaxHeap(h.heap);
for(vector<int>::iterator iter = h.heap.begin();iter!=h.heap.end();iter++)
cout<<*iter<<endl;
cin>>cmd;
return 0;
}
C++创建最大堆
最新推荐文章于 2024-03-26 23:29:24 发布