Guest User

Untitled

a guest
Aug 17th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.69 KB | None | 0 0
  1. use std::mem::swap;
  2. fn main() {
  3. let mut v = vec![5, 3, 4, 2, 1];
  4. bubble_sort_2(&mut v);
  5. println!("{:?}", v);
  6. }
  7.  
  8. fn bubble_sort_1(v: &mut [impl Ord]) {
  9. if v.is_empty() {
  10. return;
  11. }
  12. for i in 1 .. v.len() {
  13. let (left, right) = v.split_at_mut(i);
  14. for j in 0 .. right.len() {
  15. if left[i - 1] > right[j] {
  16. swap(&mut left[i - 1], &mut right[j]);
  17. }
  18. }
  19. }
  20. }
  21.  
  22. fn bubble_sort_2(v: &mut [impl Ord]) {
  23. for i in 0..v.len() {
  24. let mut min_pos = i;
  25. for j in i + 1..v.len() {
  26. if v[j] < v[min_pos] {
  27. min_pos = j;
  28. }
  29. }
  30. v[i..=min_pos].rotate_right(1);
  31. }
  32. }
Add Comment
Please, Sign In to add comment