bubble_sort.sf 551 B

12345678910111213141516171819202122232425262728
  1. #!/usr/bin/ruby
  2. #
  3. ## https://rosettacode.org/wiki/Sorting_algorithms/Bubble_sort
  4. #
  5. func bubble_sort(Array arr) -> Array {
  6. loop {
  7. var swapped = false
  8. { |i|
  9. if (arr[i] > arr[i+1]) {
  10. arr[i, i+1] = arr[i+1, i]
  11. swapped = true
  12. }
  13. } << ^arr.end
  14. swapped || break
  15. }
  16. return arr
  17. }
  18. var numbers = [7,6,5,9,8,4,3,1,2,0];
  19. say bubble_sort(numbers);
  20.  
  21. var strs = ["John", "Kate", "Zerg", "Alice", "Joe", "Jane"];
  22. say bubble_sort(strs);
  23. assert_eq(strs, sort(strs))