bisuke bisuke - 4 months ago 18
Ruby Question

Sorting inputed numbers on array - Ruby - without using 'sort'

I would really appreciate it if someone can help me on this.
I want to input numbers on this array x[0,100]
Then, print the whole array but with the numbers inside sorted from the smallest to biggest WITHOUT using sort array.

I have this code so far, but I get an error where I do the comparison. Can someone help me on this please?

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

Answer

Regardless of what the best solution would be, you get an error because your second loop is going out of bound: you're calling x[j+1] up to x.length-1, which means that you end up calling x[x.length] when the last element is x[x.length - 1].

Just replace "for j in 0..x.length-1" with "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