diff --git a/schwab_sort.h b/schwab_sort.h index 527effe..36bd2d6 100644 --- a/schwab_sort.h +++ b/schwab_sort.h @@ -242,17 +242,21 @@ static inline void schwab_sort( /* But that would complicate codes above this point! */ /* Rem.: Order of operations try to be a cache-friendly as */ /* possible, but had to put loops changes to the end */ - if(needmid) { - schwab_sort(array, plo, pmid - 1, state); - schwab_sort(array, pmid, phi - 1, state); - } if(lolen < hilen) { schwab_sort(array, low, plo - 1, state); + if(needmid) { + schwab_sort(array, plo, pmid - 1, state); + schwab_sort(array, pmid, phi - 1, state); + } low = phi; /* high = high; */ } else { schwab_sort(array, phi, high, state); + if(needmid) { + schwab_sort(array, pmid, phi - 1, state); + schwab_sort(array, plo, pmid - 1, state); + } /* low = low; */ high = plo - 1;