Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. // Author Bill Wood
  2. // in-place, order N
  3. fn main() {
  4. let mut x = vec!(1,2,2,3,2,1,5,8,4,9,);
  5. println!("{:?}", stalin_sort(&mut x));
  6. let mut x = vec!(1,2,2,3,2,5,8,4,9,);
  7. println!("{:?}", stalin_sort(&mut x));
  8. let mut x = vec!('a','b','c','b','e','g','d','x');
  9. println!("{:?}", stalin_sort(&mut x));
  10. let mut ideologies = vec!(
  11. "Fully Automated Luxury Space Communism",
  12. "Socialism",
  13. "Capitalism",
  14. "Communism",
  15. );
  16. println!("{:?}", stalin_sort(&mut ideologies));
  17. assert_eq!(vec!(1), stalin_sort(&mut vec!(1)));
  18. assert_eq!(vec!(1,1), stalin_sort(&mut vec!(1,1)));
  19. let mut x: Vec<i32> = vec!();
  20. assert_eq!(x.clone(), stalin_sort(&mut x));
  21. }
  22.  
  23. fn stalin_sort<T: PartialOrd + std::fmt::Debug>(v: &mut [T]) -> &[T] {
  24. let mut i = 1;
  25. let mut len = v.len();
  26. while i < len {
  27. v.swap(i, i + v.len() - len);
  28. if v[i] >= v[i - 1] {
  29. i += 1;
  30. } else {
  31. len -= 1;
  32. //println!("{:?}", &v[..len]);
  33. }
  34. }
  35. &v[..len]
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement