> This is close to what I had in mind when I saw the #ifdef but is it > the same thing? IIUC, in the original version, the loop will execute > at least once. In this version, it may not execute at all (i.e., if > __parent is zero).
In the original version __parent is 0 only for __dist in [ 1; 2; 3 ]. In this version __parent is 1 (will become 0 before calling __adjust_heap() due to predecrement) for __dist in [ 2; 3 ]. But when __dist == 1 (the heap contain's the exactly one element) there's no sence to call __adjust_heap(). Farid.
