quicksort was buggy lol

This commit is contained in:
Richard Thier 2023-04-18 16:22:01 +02:00
parent 4c0e79e173
commit 4e24903b18

View File

@ -477,9 +477,16 @@ static inline void ts_quicksort_inplace(
}
}
/* Fix left to be after the point of separation in odd lengths */
if(left == right) {
tskey leftkey = arr[left].key;
TSU32 lefti = arr[left].i;
left += (lt(pivotkey, leftkey, pivoti, lefti, reent_data));
}
/* Just simple recursion for now */
ts_quicksort_inplace(arr, from, mid, lt, reent_data);
ts_quicksort_inplace(arr, mid, to, lt, reent_data);
ts_quicksort_inplace(arr, from, left, lt, reent_data);
ts_quicksort_inplace(arr, left, to, lt, reent_data);
}
/**
@ -516,9 +523,9 @@ static inline void ts_quicksort_fromto(
}
}
/* Just simple recursion for now */
ts_quicksort_inplace(dst, from, mid, lt, reent_data);
ts_quicksort_inplace(dst, mid, to, lt, reent_data);
/* Can use inplace steps from now on */
ts_quicksort_inplace(dst, from, li, lt, reent_data);
ts_quicksort_inplace(dst, li, to, lt, reent_data);
}
/** Internal code reuse (type-branches should be optimized out) */