插入建堆(最小堆为例)
int h[1001], size, m, n;
void create () { // 这里是初始化, 堆实际上是一个数组,
size = 0;
h[0] = -10001; /* 设置岗哨 */
}
void insert ( int x ) {
int i;
/* 换位置 */
for ( i = ++size; h[i / 2] > x; i /= 2 )
h[i] = h[i / 2];
h[i] = x;
}
按照这个方法,可以直接把插入的数据建成堆