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

时间:2015-10-19 09:10:46

标签: arrays ruby sorting numbers comparison

如果有人可以帮助我,我会非常感激。 我想在这个数组上输入数字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 

2 个答案:

答案 0 :(得分:5)

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

只需将“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

答案 1 :(得分:0)

Ruby范围的行为与数组非常相似,至少在循环时。它们已经有序了。

"buildOptions": {
   "emitEntryPoint": true,
   "preserveCompilationContext": true
}

您的代码看起来正在查看下一个元素是否更高,然后滑动。但是阵列中的更多元素呢?这是递归方式

(1..100).each { |num| puts num }