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