sorting_algorithm/bubble_sort.rs
1/// Sorts a data set using Bubble Sort
2///
3/// Average time complexity: O(n<sup>2</sup>)
4///
5/// # Examples
6///
7/// ```
8/// use sorting_algorithm::bubble_sort;
9///
10/// fn main() {
11/// let mut data = [3, 1, 2, 5, 4];
12///
13/// bubble_sort::sort(&mut data);
14///
15/// assert_eq!(data, [1, 2, 3, 4, 5]);
16/// }
17/// ```
18pub fn sort<T: Ord>(data: &mut [T]) {
19 let len = data.len();
20
21 for i in 0..len {
22 let mut swapped = false;
23
24 for j in 0..(len - i - 1) {
25 if data[j] > data[j + 1] {
26 data.swap(j, j + 1);
27 swapped = true;
28 }
29 }
30
31 if !swapped {
32 return;
33 }
34 }
35}