[][src]Function sorting_rs::quick_sort::quick_sort

pub fn quick_sort<T: PartialOrd>(input: &mut [T])

Sorts a slice in-place using Quick sort, Dual-Pivot Quicksort All kinds of slices can be sorted as long as they implement PartialOrd. Dual pivot quicksort additionally needs Copy

Quicksort can be compared to merge sort as it also is a divide-and-conquer algorithm. However, quicksort does all the heavy work before the recursive calls, so it could also be called a conquer-and-divide algorithm. This implementation uses the Lomuto partition scheme.

Examples

let mut vec = vec![0, -1, -2, -3,];
sorting_rs::quick_sort(&mut vec);
assert_eq!(vec, &[-3, -2, -1, 0]);
let mut strings = vec!["rustc", "cargo", "rustup"];
sorting_rs::quick_sort(&mut strings);
assert_eq!(strings, &["cargo", "rustc", "rustup"]);
let mut vec = vec![0, -1, -2, -3,];
sorting_rs::quick_dual_sort(&mut vec);
assert_eq!(vec, &[-3, -2, -1, 0]);
let mut strings = vec!["rustc", "cargo", "rustup"];
sorting_rs::quick_dual_sort(&mut strings);
assert_eq!(strings, &["cargo", "rustc", "rustup"]);