【问题标题】:How to run each_index in ruby till second last element?如何在红宝石中运行 each_index 直到倒数第二个元素?
【发布时间】:2016-01-15 09:49:04
【问题描述】:

我正在尝试在 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])

【问题讨论】:

    标签: arrays ruby iterator each


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 2022-01-21
      • 2016-10-30
      • 1970-01-01
      相关资源
      最近更新 更多