Я пытался сортировать массив. Я знаю, что могу использовать sort_by
, но я пытался реализовать его сам. Вот код:Итерация массива назад в последнюю позицию
def insertionSort(ar)
for i in 1..ar.length - 1
j = i
k = j - 1
while ar[j] < ar[k] && j != 0 do
temp = ar[k]
ar[k] = ar[j]
ar[j] = temp
k -= 1
j -= 1
end
puts ar.join(" ")
end
end
Когда программа достигает первую линию и декремент, она вернулась к последней позиции, так что while
не ломается никогда. Я решил это с условием в while
, чтобы проверить, является ли первая позиция.
Это нормально? Почему это происходит? Является ли массив похожим на список циклов, и когда я пытаюсь достичь позиции -1, использую ли я последнюю позицию?
FYI: http://rosettacode.org/wiki/Sorting_algorithms/Insertion_sort#Ruby –
Вы можете поменять переменные без ' temp' variable: 'ar [k], ar [j] = ar [j], ar [k]' – Stefan
Я считаю, что вы не понимали, когда рубин использует циклический массив. Читайте, чтобы опубликовать, что @GaganGami прилагается в его комментарии. –