在数组上对输入的数字进行排序 - Ruby - 不使用 'sort'
Sorting inputed numbers on array - Ruby - without using 'sort'
如果有人能帮助我,我将不胜感激。
我想在这个数组 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
无论最佳解决方案是什么,您都会收到错误消息,因为您的第二个循环超出范围:您正在调用 x[j+1] 直到 x.length-1,这意味着当最后一个元素是 x[x.length - 1].
时,你最终调用了 x[x.length]
只需将 "for j in 0..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
Ruby 范围的行为非常像数组,至少在循环时是这样。他们已经准备好了。
(1..100).each { |num| puts num }
您的代码看起来像是在寻找下一个元素是否更高,然后滑动。但是数组中的更多元素呢?这是递归的方式
def my_sort(list, new_array = nil)
return new_array if list.size <= 0
if new_array == nil
new_array = []
end
min = list.min
new_array << min
list.delete(min)
my_sort(list, new_array)
end
puts my_sort([3, 1, 2, 20, 11, 14, 3, 6, 8, 5])
如果有人能帮助我,我将不胜感激。 我想在这个数组 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
无论最佳解决方案是什么,您都会收到错误消息,因为您的第二个循环超出范围:您正在调用 x[j+1] 直到 x.length-1,这意味着当最后一个元素是 x[x.length - 1].
时,你最终调用了 x[x.length]只需将 "for j in 0..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
Ruby 范围的行为非常像数组,至少在循环时是这样。他们已经准备好了。
(1..100).each { |num| puts num }
您的代码看起来像是在寻找下一个元素是否更高,然后滑动。但是数组中的更多元素呢?这是递归的方式
def my_sort(list, new_array = nil)
return new_array if list.size <= 0
if new_array == nil
new_array = []
end
min = list.min
new_array << min
list.delete(min)
my_sort(list, new_array)
end
puts my_sort([3, 1, 2, 20, 11, 14, 3, 6, 8, 5])