我正在尝试在ruby中实现冒泡排序。对于迭代,我使用each_index作为输入数组。我在最后一个索引处得到一个错误,因为i + 1索引元素是nil,而ruby给出了将它与Fixnum进行比较的异常。有办法解决吗?我可以以某种方式停止第二个元素的each_index吗?
def bubble_sort(array)
flag = false
while flag == false
array.each_index do |i|
if array[i] > array[i+1]
array[i], array[i+1] = array[i+1], array[i]
flag = false
else
flag = true
end
end
end
puts array
end
bubble_sort([2,5,3,8,5,6,10])
答案 0 :(得分:1)
查看each_cons。
def bubble_sort(array)
flag = false
while flag == false
array.each_index.each_cons(2) do |i,j|
if array[i] > array[j]
array[i], array[j] = array[j], array[i]
flag = false
else
flag = true
end
#etc