insert( n, r ) RecordArray r; int n; {int i; ArrayEntry tempr; tempr = r[n]; for ( ; n>0; n=i) { i = (n-1)/2; if ( r[i].k <= tempr.k ) break; r[n] = r[i]; } r[n] = tempr; }; siftup( r, i, n ) RecordArray r; int i, n; {ArrayEntry tempr; int j; while ( (j=2*i+1) <= n ) { if ( j r[j+1].k ) j++; if ( r[i].k > r[j].k ) { tempr = r[j]; r[j] = r[i]; r[i] = tempr; i = j; } else break; } };