	procedure siftup( var r : RecordArray; i,n : integer );

	var	j : integer;
		tempr : ArrayEntry;
	begin
		while 2*i<=n do begin
			j := 2*i;
			if j<n then
				if r[j].k < r[j+1].k then j := j+1;
			if r[i].k < r[j].k then begin
				tempr := r[j];
				r[j] := r[i];
				r[i] := tempr;
				i := j
				end
			else	i := n+1
			end
	end;
