insertion_sort.sf 583 B

1234567891011121314151617181920212223242526272829
  1. #!/usr/bin/ruby
  2. #
  3. ## https://rosettacode.org/wiki/Sorting_algorithms/Insertion_sort
  4. #
  5. class Array {
  6. method insertion_sort {
  7. { |i|
  8. var j = i;
  9. var k = self[i+1];
  10. while ((j >= 0) && (k < self[j])) {
  11. self[j+1] = self[j];
  12. j--;
  13. }
  14. self[j+1] = k;
  15. } * self.end;
  16. return self;
  17. }
  18. }
  19.  
  20. var numbers = [7,6,5,9,8,4,3,1,2,0];
  21. say numbers.insertion_sort;
  22.  
  23. var strs = ["John", "Kate", "Zerg", "Alice", "Joe", "Jane"];
  24. say insertion_sort(strs);
  25. assert_eq(strs, sort(strs))