1fn bubble_sort(arr: &mut [i32]) -> &mut [i32] {
13 let len = arr.len();
14 for i in 0..len {
15 for j in 0..len - i - 1 {
16 if arr[j] > arr[j + 1] {
17 arr.swap(j, j + 1);
18 }
19 }
20 }
21
22 return arr;
23}
24
25#[cfg(test)]
26mod tests {
27 use super::*;
28
29 #[test]
30 fn bubble() {
31 let mut arr = vec![3, 2, 1, 5, 6, 7, 3, 4];
32 let sorted = vec![1, 2, 3, 3, 4, 5, 6, 7];
33 assert_eq!(bubble_sort(&mut arr), &sorted);
34
35 let mut arr = vec![5, 6, 1, 9, 10, 2, 5, 8, 4];
36 let sorted = vec![1, 2, 4, 5, 5, 6, 8, 9, 10];
37 assert!(bubble_sort(&mut arr) == &sorted);
38 }
39}