From 433163d905abbcddae5717f5d69d7ec6ff867c76 Mon Sep 17 00:00:00 2001 From: Ahmed Nadeem <70218377+ahmed-deftoner@users.noreply.github.com> Date: Mon, 12 Sep 2022 14:07:15 +0500 Subject: [PATCH] Add Quick Sort Tests (#373) --- src/sorting/quick_sort.rs | 53 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/src/sorting/quick_sort.rs b/src/sorting/quick_sort.rs index ff0c087f5ed..e07605c373d 100644 --- a/src/sorting/quick_sort.rs +++ b/src/sorting/quick_sort.rs @@ -23,6 +23,7 @@ pub fn partition(arr: &mut [T], lo: isize, hi: isize) -> isize { arr.swap(i as usize, pivot as usize); i } + fn _quick_sort(arr: &mut [T], lo: isize, hi: isize) { if lo < hi { let p = partition(arr, lo, hi); @@ -30,7 +31,57 @@ fn _quick_sort(arr: &mut [T], lo: isize, hi: isize) { _quick_sort(arr, p + 1, hi); } } + pub fn quick_sort(arr: &mut [T]) { let len = arr.len(); - _quick_sort(arr, 0, (len - 1) as isize); + if len > 1 { + _quick_sort(arr, 0, (len - 1) as isize); + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn basic() { + let mut res = vec![10, 8, 4, 3, 1, 9, 2, 7, 5, 6]; + quick_sort(&mut res); + assert_eq!(res, vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); + } + + #[test] + fn basic_string() { + let mut res = vec!["a", "bb", "d", "cc"]; + quick_sort(&mut res); + assert_eq!(res, vec!["a", "bb", "cc", "d"]); + } + + #[test] + fn empty() { + let mut res = Vec::::new(); + quick_sort(&mut res); + assert_eq!(res, vec![]); + } + + #[test] + fn one_element() { + let mut res = vec![1]; + quick_sort(&mut res); + assert_eq!(res, vec![1]); + } + + #[test] + fn pre_sorted() { + let mut res = vec![1, 2, 3, 4]; + quick_sort(&mut res); + assert_eq!(res, vec![1, 2, 3, 4]); + } + + #[test] + fn reverse_sorted() { + let mut res = vec![4, 3, 2, 1]; + quick_sort(&mut res); + assert_eq!(res, vec![1, 2, 3, 4]); + } }