1use sorted_ifyer::is_sorted;
6pub fn bubblesort<T: std::clone::Clone + std::cmp::PartialOrd>(stuff_to_sort: &[T]) -> Vec<T> {
7 let mut sorted_stuff = stuff_to_sort.to_vec();
8 if sorted_stuff.is_empty() {
9 return sorted_stuff;
10 }
11 let mut lowest_sorted = stuff_to_sort.len() - 1;
12 while !is_sorted(stuff_to_sort, lowest_sorted + 1, 0) {
13 for i in 1..=lowest_sorted {
14 if sorted_stuff[i - 1] > sorted_stuff[i] {
15 sorted_stuff.swap(i - 1, i);
16 }
17 if i == lowest_sorted {
18 lowest_sorted -= 1
19 }
20 }
21 }
22 sorted_stuff
23}