Only use explicit ">" in sorting algo

This commit is contained in:
Xinchen Hui 2015-01-19 03:32:28 -05:00
parent 0bf9326512
commit b33629f212

View File

@ -98,8 +98,8 @@ static inline void zend_sort_2(void *a, void *b, compare_func_t cmp, swap_func_t
/* }}} */
static inline void zend_sort_3(void *a, void *b, void *c, compare_func_t cmp, swap_func_t swp) /* {{{ */ {
if (cmp(a, b) <= 0) {
if (cmp(b, c) <= 0) {
if (!(cmp(a, b) > 0)) {
if (!(cmp(b, c) > 0)) {
return;
}
swp(b, c);
@ -108,7 +108,7 @@ static inline void zend_sort_3(void *a, void *b, void *c, compare_func_t cmp, sw
}
return;
}
if (cmp(c, b) <= 0) {
if (!(cmp(c, b) > 0)) {
swp(a, c);
return;
}
@ -178,15 +178,16 @@ ZEND_API void zend_insert_sort(void *base, size_t nmemb, size_t siz, compare_fun
char *i, *j, *k;
char *start = (char *)base;
char *end = start + (nmemb * siz);
size_t siz2= siz + siz;
char *sentry = start + (6 * siz);
for (i = start + siz; i < sentry; i += siz) {
j = i - siz;
if (cmp(j, i) <= 0) {
if (!(cmp(j, i) > 0)) {
continue;
}
while (j != start) {
j -= siz;
if (cmp(j, i) <= 0) {
if (!(cmp(j, i) > 0)) {
j += siz;
break;
}
@ -197,14 +198,14 @@ ZEND_API void zend_insert_sort(void *base, size_t nmemb, size_t siz, compare_fun
}
for (i = sentry; i < end; i += siz) {
j = i - siz;
if (cmp(j, i) <= 0) {
if (!(cmp(j, i) > 0)) {
continue;
}
do {
j -= siz * 2;
if (cmp(j, i) <= 0) {
j -= siz2;
if (!(cmp(j, i) > 0)) {
j += siz;
if (cmp(j, i) <= 0) {
if (!(cmp(j, i) > 0)) {
j += siz;
}
break;