fork(1) download
  1. def selection_sort_enum(array)
  2. n = array.length - 1
  3.  
  4. 0.upto(n - 1) do |i|
  5. smallest = i
  6.  
  7. (i + 1).upto(n) do |j|
  8. smallest = j if array[j] < array[smallest]
  9. end
  10. array[i], array[smallest] = array[smallest], array[i] if i != smallest
  11. end
  12. end
  13.  
  14. def selection_sort_loop(array)
  15. n = array.length - 1
  16. i = 0
  17. while i <= n - 1
  18. smallest = i
  19. j = i + 1
  20. while j <= n
  21. smallest = j if array[j] < array[smallest]
  22. j += 1
  23. end
  24. array[i], array[smallest] = array[smallest], array[i] if i != smallest
  25. i += 1
  26. end
  27. end
  28.  
  29. puts "Using enum:"
  30. a1 = [*1..10].shuffle
  31. puts "Before sort: #{a1.inspect}"
  32. selection_sort_enum(a1)
  33. puts "After sort: #{a1.inspect}"
  34. puts
  35. puts "Using while:"
  36. a2 = [*1..10].shuffle
  37. puts "Before sort: #{a2.inspect}"
  38. selection_sort_enum(a2)
  39. puts "After sort: #{a2.inspect}"
  40.  
Success #stdin #stdout 0.06s 9712KB
stdin
Standard input is empty
stdout
Using enum:
Before sort: [6, 4, 9, 10, 2, 5, 8, 1, 7, 3]
After sort: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Using while:
Before sort: [5, 9, 1, 10, 6, 3, 4, 2, 7, 8]
After sort: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]