Browse Source

Change SWAP to something worging

1.0.0
Georg Hopp 10 years ago
parent
commit
e61347f060
  1. 15
      src/heap/get.c
  2. 12
      src/heap/put.c

15
src/heap/get.c

@ -46,10 +46,9 @@ TR_heapGet(TR_Heap this)
return value;
}
SWAP(
void *,
TR_darrGet((TR_Dynarray)this, 0),
TR_darrGet((TR_Dynarray)this, idx));
const void * tmp = TR_darrGet((TR_Dynarray)this, 0);
TR_darrPutAt((TR_Dynarray)this, TR_darrGet((TR_Dynarray)this, idx), 0);
TR_darrPutAt((TR_Dynarray)this, tmp, idx);
idx = 0;
while (left < ((TR_Dynarray)this)->size &&
@ -67,10 +66,12 @@ TR_heapGet(TR_Heap this)
if (0 > this->comp(
TR_darrGet((TR_Dynarray)this, idx),
TR_darrGet((TR_Dynarray)this, change))) {
SWAP(
void *,
tmp = TR_darrGet((TR_Dynarray)this, change);
TR_darrPutAt(
(TR_Dynarray)this,
TR_darrGet((TR_Dynarray)this, idx),
TR_darrGet((TR_Dynarray)this, change));
change);
TR_darrPutAt((TR_Dynarray)this, tmp, idx);
idx = change;
left = (idx << 1) + 1;
right = left + 1;

12
src/heap/put.c

@ -36,12 +36,14 @@ TR_heapPut(TR_Heap this, const void * data)
size_t parent = (idx - 1) >> 1;
if (0 > this->comp(
TR_darrGet((TR_Dynarray)this, parent),
TR_darrGet((TR_Dynarray)this, parent),
TR_darrGet((TR_Dynarray)this, idx))) {
SWAP(
void *,
TR_darrGet((TR_Dynarray)this, parent),
TR_darrGet((TR_Dynarray)this, idx));
const void * tmp = TR_darrGet((TR_Dynarray)this, parent);
TR_darrPutAt(
(TR_Dynarray)this,
TR_darrGet((TR_Dynarray)this, idx),
parent);
TR_darrPutAt((TR_Dynarray)this, tmp, idx);
idx = parent;
} else {
break;

Loading…
Cancel
Save