diff --git a/schwab_sort.h b/schwab_sort.h index 36bd2d6..527effe 100644 --- a/schwab_sort.h +++ b/schwab_sort.h @@ -242,21 +242,17 @@ 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;