Вопрос: с первой строкой в цикле «до» мы устанавливаем логическое, отсортированное и истинное. Почему цикл работает даже после этой строки? Также почему мы не можем поместить sorted = true после цикла .times do (чтобы закрыть цикл до сортировки) и добиться того же результата?До тех пор, пока цикл - почему он не выходит сразу?
def bubble_sort(arr)
len = arr.length
sorted = false
until sorted
sorted = true
(len-1).times do |i|
if arr[i] > arr[i+1]
arr[i],arr[i+1] = arr[i+1],arr[i]
sorted = false
end
end
end
arr
end
Заранее благодарен!
Попробуйте следующее: 'lives = 1; пока жизнь == 10 не сделает; ставит «Остерегайтесь!»; (lives == 9)? puts («Эгад! У меня было девять!»): puts («Уйу, это было близко, это номер # {lives}»); жизни + = 1; конец; ставит «Meooowwwww». –
До тех пор пока и не очень тесно связаны, но я думаю, что они расходятся в последнее время. Переведенный здесь опыт не соответствует таковому в [документации] (http://ruby-doc.org/docs/keywords/1.9/files/keywords_rb.html#M000038). Если условный оператор является ложным, согласно документации, он не должен обрабатывать блок. То есть, если это не форма модификатора, как в форме «begin..end до false». – vgoff