X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=debug%2Fsorter%2Fretros.c;h=0d417bab48429488ef85494ab95ebb99588ab0f5;hb=1d92ad2e62c2f12405aac4339af536591f721f6a;hp=aba8d9af6ece0b077c1ddcd3e46d77d6402b3fe8;hpb=6e4a965d34a0852c383bbf881211f1b038f1291b;p=libucw.git diff --git a/debug/sorter/retros.c b/debug/sorter/retros.c index aba8d9af..0d417bab 100644 --- a/debug/sorter/retros.c +++ b/debug/sorter/retros.c @@ -1,7 +1,7 @@ /* * Experiments with various sorting algorithms * - * (c) 2007 Martin Mares + * (c) 2007--2008 Martin Mares */ #include "sherlock/sherlock.h" @@ -623,6 +623,18 @@ static void heapsort(void) uns nn = n; while (nn) HEAP_DELMIN(struct elt, heap, nn, H_LESS, HEAP_SWAP); +#undef H_LESS +} + +static void heapsort_ind(void) +{ +#define H_LESS(_a,_b) ((_a)->key > (_b)->key) + struct elt **heap = ind-1; + HEAP_INIT(struct elt *, heap, n, H_LESS, HEAP_SWAP); + uns nn = n; + while (nn) + HEAP_DELMIN(struct elt *, heap, nn, H_LESS, HEAP_SWAP); +#undef H_LESS } static void mk_ary(void) @@ -707,6 +719,8 @@ int main(int argc, char **argv) for (uns i=0; i