sorting_algorithms_shell_sort.sf 551 B

123456789101112131415161718192021222324252627
  1. #!/usr/bin/ruby
  2. #
  3. ## https://rosettacode.org/wiki/Sorting_algorithms/Shell_sort
  4. #
  5. func shell_sort(a) {
  6. var h = a.len;
  7. while (h = (h / 2 -> int)) {
  8. range(h, a.end).each { |i|
  9. var k = a[i];
  10. var j;
  11. for (j = i; (j >= h) && (k < a[j - h]); j -= h) {
  12. a[j] = a[j - h];
  13. }
  14. a[j] = k;
  15. }
  16. }
  17. return a;
  18. }
  19.  
  20. var numbers = [7,6,5,9,8,4,3,1,2,0];
  21. say shell_sort(numbers);
  22.  
  23. var strs = ["John", "Kate", "Zerg", "Alice", "Joe", "Jane"];
  24. say shell_sort(strs);