comb_sort.sf 462 B

1234567891011121314151617181920212223
  1. #!/usr/bin/ruby
  2. func combSort(Array arr) {
  3. var gap = arr.len;
  4. var swaps = true;
  5. while (gap > 1 || swaps) {
  6. {gap.div!(1.25).int!} -> if (gap > 1);
  7. swaps = false;
  8. range(0, arr.end - gap) -> each { |i|
  9. if (arr[i] > arr[i+gap]) {
  10. arr[i, i+gap] = arr[i+gap, i];
  11. swaps = true;
  12. }
  13. }
  14. }
  15. return arr;
  16. }
  17. var arr = @(1..10).shuffle;
  18. say arr;
  19. combSort(arr);
  20. say arr;