1
0
mirror of https://gitlab.com/Anson-Projects/anson-stuff/Go-v-Rust-Quicksort.git synced 2025-08-03 12:11:26 +00:00

both works

This commit is contained in:
2022-04-25 17:44:42 -07:00
parent f7f91c2da5
commit 934f5aa61b
2 changed files with 93 additions and 93 deletions

View File

@@ -17,14 +17,14 @@ fn choose_pivot<T: Ord>(slice: &[T]) -> usize {
}
fn partition<T: Ord>(slice: &mut [T], pivot: usize) -> usize {
let mxix = slice.len() - 1;
slice.swap(pivot, mxix);
let (mut left, mut right) = (0, mxix - 1);
let mid = slice.len() - 1;
slice.swap(pivot, mid);
let (mut left, mut right) = (0, mid - 1);
while left < right {
if slice[left] <= slice[mxix] {
if slice[left] <= slice[mid] {
left += 1;
} else if slice[right] >= slice[mxix] {
} else if slice[right] >= slice[mid] {
right -= 1;
} else {
slice.swap(left, right);
@@ -35,16 +35,16 @@ fn partition<T: Ord>(slice: &mut [T], pivot: usize) -> usize {
if left > right {
// We just swapped the final two.
slice.swap(left, mxix);
slice.swap(left, mid);
return left;
}
// Left and right met.
if slice[left] >= slice[mxix] {
slice.swap(left, mxix);
if slice[left] >= slice[mid] {
slice.swap(left, mid);
return left;
} else if slice[left] <= slice[mxix] {
slice.swap(left + 1, mxix);
} else if slice[left] <= slice[mid] {
slice.swap(left + 1, mid);
return left + 1;
}