algo_sorting/
lib.rs

1/// Sorts the array using Bubble sort algorithm
2///
3/// # Examples
4///
5/// ```
6/// let arg = vec![2, 3, 1, 5, 6, 4];
7/// let answer = vec![1, 2, 3, 4, 5, 6];
8/// assert_eq!(bubble_sort(arg), answer);
9///
10/// ```///
11
12fn 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}