对数组中的输入数字进行排序 - Ruby - 不使用'sort'

bis*_*uke 2 ruby arrays sorting comparison numbers

如果有人可以帮助我,我将非常感激.我想在这个数组上输入数字x [0,100]然后,打印整个数组,但里面的数字从最小到最大排序,不使用排序数组.

到目前为止我有这个代码,但是在进行比较时出现错误.请有人帮我这个吗?

x = [0,100]
print x 

puts "\nInput any number from 0~100"
num = gets.to_i
x.push(num)

for i in 0..x.length-1
    for j in 0..x.length-1
        if x[j] < x[j+1] 
            swap = x[j]
            x[j] = x[j+1]
            x[j+1] = swap
        end
    end
end
p x 
Run Code Online (Sandbox Code Playgroud)

Nyc*_*cen 5

无论最佳解决方案是什么,都会出现错误,因为您的第二个循环超出了界限:您将x [j + 1]调用到x.length-1,这意味着您最终调用x [ x.length]当最后一个元素是x [x.length - 1]时.

只需将"for 0 inx..x.length-1"替换为"for j in 0..x.length-2"

x = [0,100]
print x

puts "\nInput any number from 0~100"
num = gets.to_i
x.push(num)

for i in 0..x.length-1
    for j in 0..x.length-2
        if x[j] < x[j+1]
            swap = x[j]
            x[j] = x[j+1]
            x[j+1] = swap
        end
    end
end
p x
Run Code Online (Sandbox Code Playgroud)