为什么代码错误地对两个数组进行排序?

时间:2017-05-16 04:14:35

标签: arrays ruby sorting for-loop

以下是我尝试解决问题的更新 为什么它反向排序数组?逻辑对我有意义。

def combine_array(arr1,arr2)
arr3 = []
arr1.each do |x|
    arr3.push(x)
end

arr2.each do |x|
    arr3.push(x)
end

arr3.each_index do |i|
    arr3.each_index do |j|
      if arr3[i] > arr3[j]
        hold = arr3[i]
        hold2 = arr3[j]
        arr3[i] = hold2
        arr3[j] = hold
      end
end
end
return arr3

combine_array([1,5,3],[-6,2,4-三])

Click link to see the code and the array in reverse order

3 个答案:

答案 0 :(得分:1)

  1. 您迭代arr3[i+1..-1].each_index do |j|,然后引用了arr3[j],但这是arr3的正面部分,您可能并不打算这样做。 jarr3[i+1..-1]内的索引,而不是arr3

  2. 您只需经过arr3一次,并且并非所有数组都可以通过算法中的一次传递进行排序。

答案 1 :(得分:0)

这是解决方案

def combine_array(arr1,arr2)
arr3 = []
arr1.each do |x|
    arr3.push(x)
end

arr2.each do |x|
    arr3.push(x)
end

arr3.each_index do |i|
    j = i+1
    until j == arr3.length  do
        if arr3[i] > arr3[j]
            hold = arr3[i]
            hold2 = arr3[j]
            arr3[i] = hold2
            arr3[j] = hold
        end
        j+=1
    end
end
return arr3

combine_array([1,5,3],[-6,2,4-三])

答案 2 :(得分:-1)

如果您不想使用.sort方法,这可能是另一种可能感兴趣的方法: Sorting an Array in Ruby without using Sort method