Каждый раз, когда я изучаю новый язык, я пытаюсь создать в нем пузырьковую сортировку. Я делаю это, потому что он использует значительную часть общей итерации, так что я могу ссылаться на него позже.
Теперь на любом другом языке, на котором я пробовал это (C, Python, VB), это была (максимум) 20-минутная задача ... (бар из C, где я столкнулся с выделением памятипроблемы).
Но в Руби ... я просто не могу заставить это работать. Я следовал той же формуле, которую всегда использовал. Без дальнейших церемоний:
#!/usr/bin/ruby
unsorted = []
swapFlag = 0
count = 1 # 1 == TRUE, 0 == FALSE
temp = 0
# Fills array with random numbers
while count != 20
count += 1
unsorted[count]=rand(100)
end
# Prints unsorted numbers, for comparison
while count != 0
print "#{count} #{unsorted[count]} \n"
count -= 1
end
print "\n"
limit = unsorted.length
# This section is the problem.
# I'm assuming it's got something to do with the logic of the loop
while swapFlag == 1
swapFlag = 0
for count in 1..limit
if unsorted[count] > unsorted[count + 1]
temp = unsorted[count + 1]
unsorted[count + 1] = unsorted[count]
unsorted[count] = temp
swapFlag = 1
end
end
end
count = 0
while count != 20
count += 1
print "#{count} - #{unsorted[count]} \n"
end
Я пытался использовать другой синтаксис цикла if, используя метод .each do ... безрезультатно.