最小堆的建立
#include<iostream> #include<math.h> #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<string.h> const int MAX=50; using namespace std; int h[MAX]; void sifup(int i) { if(i==1) { return; } while(i/2!=0) { if(h[i]<h[i/2])//小于父节点 //上浮 { swap(h[i],h[i/2]); } else //等于父节点 或是 大于父节点 不需要操作 { return; //break; } i/=2; } } int main() { for(int i=1;i<=10;i++) { h[i]=rand()%20; sifup(i); } for(int i=1;i<=10;i++) { cout<<h[i]<<" "; } return 0; }