1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
pub fn bubble_sort<T:PartialOrd>(input: &mut [T]) { for i in 0..input.len() { let mut is_sorted = true; for j in 0..(input.len() - 1) - i { if input[j] > input[j + 1] { input.swap(j, j +1); is_sorted = false; } } if is_sorted { return } } } #[cfg(test)] mod tests { use super::*; #[test] fn test_bubble_sort() { let mut v = vec![5, 4, 9, 12, 16, 100, 2]; bubble_sort(&mut v); assert_eq!(v, vec![2, 4, 5, 9, 12, 16, 100]); } }