/* This fragment implements a comb sort (specifically combsort11) */ #ifndef _HAVE_CAIRO_COMBSORT_NEWGAP #define _HAVE_CAIRO_COMBSORT_NEWGAP staticinlineunsignedint
_cairo_combsort_newgap (unsignedint gap)
{
gap = 10 * gap / 13; if (gap == 9 || gap == 10)
gap = 11; if (gap < 1)
gap = 1; return gap;
} #endif
#define CAIRO_COMBSORT_DECLARE(NAME, TYPE, CMP) \ staticvoid \
NAME (TYPE *base, unsignedint nmemb) \
{ \ unsignedint gap = nmemb; \ unsignedint i, j; \ int swapped; \ do { \
gap = _cairo_combsort_newgap (gap); \
swapped = gap > 1; \ for (i = 0; i < nmemb-gap ; i++) { \
j = i + gap; \ if (CMP (base[i], base[j]) > 0 ) { \
TYPE tmp; \
tmp = base[i]; \
base[i] = base[j]; \
base[j] = tmp; \
swapped = 1; \
} \
} \
} while (swapped); \
}
#define CAIRO_COMBSORT_DECLARE_WITH_DATA(NAME, TYPE, CMP) \ staticvoid \
NAME (TYPE *base, unsignedint nmemb, void *data) \
{ \ unsignedint gap = nmemb; \ unsignedint i, j; \ int swapped; \ do { \
gap = _cairo_combsort_newgap (gap); \
swapped = gap > 1; \ for (i = 0; i < nmemb-gap ; i++) { \
j = i + gap; \ if (CMP (base[i], base[j], data) > 0 ) { \
TYPE tmp; \
tmp = base[i]; \
base[i] = base[j]; \
base[j] = tmp; \
swapped = 1; \
} \
} \
} while (swapped); \
}
Messung V0.5
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.