diff --git a/schwab_sort.h b/schwab_sort.h index 36bd2d6..169cb90 100644 --- a/schwab_sort.h +++ b/schwab_sort.h @@ -3,7 +3,7 @@ /* A fast quicksort-like new alg created in Csolnok, Hungary with: * - 4-way partitioning with 0..5 copies (not swaps) per elem per run - * - ensured O(log2(n)) worst recursion depth + * - "Practically ensures" O(log2(n)) recursion depth * * LICENCE: CC-BY, 2025 May 08-09 * Author: Richárd István Thier (also author of the Magyarsort) @@ -164,23 +164,20 @@ static inline int schwab_partition( * This is likely faster than calling a memcpy if we code this for not just uint32s! */ if(curr < klo) { - arr[b3] = arr[b2]; - arr[b2] = arr[b1]; - arr[b1] = arr[b0]; - arr[b0] = curr; - ++b0; ++b1; ++b2; + arr[b3] = arr[b2++]; + arr[b2 - 1] = arr[b1++]; + arr[b1 - 1] = arr[b0++]; + arr[b0 - 1] = curr; continue; } if(curr < kmid) { - arr[b3] = arr[b2]; - arr[b2] = arr[b1]; - arr[b1] = curr; - ++b1; ++b2; + arr[b3] = arr[b2++]; + arr[b2 - 1] = arr[b1++]; + arr[b1 - 1] = curr; } else { - arr[b3] = arr[b2]; - arr[b2] = curr; - ++b2; + arr[b3] = arr[b2++]; + arr[b2 - 1] = curr; } }