以下是我尝试解决问题的更新 为什么它反向排序数组?逻辑对我有意义。
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-三])
答案 0 :(得分:1)
您迭代arr3[i+1..-1].each_index do |j|
,然后引用了arr3[j]
,但这是arr3
的正面部分,您可能并不打算这样做。 j
是arr3[i+1..-1]
内的索引,而不是arr3
。
您只需经过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