Я борюсь с фрагментом цикла for in range() в книге Grokking Algorithm SelectionSort
def findthesmallest(arr):
# suppose that the left list is sorted
min = arr[0]
min_index = 0
for i in range(len(arr)):
if arr[i] < min:
min = arr[i]
min_index = i
return min_index
def selectionsort(arr):
new_arr = []
# For each i+= 1, n-=1
for i in range (len(arr)):
min_index = findthesmallest(arr)
# Add item to new_arr and update the arr
new_arr.append(arr.pop(min_index))
return new_arr
print (selectionsort([5, 3, 4, 8, 10]))
- Итак, во втором цикле for_loop selectionsort() каждый раз, когда мы заканчиваем итерацию, len(arr) - 1
- в то время как i увеличивается с каждой итерацией, range(len(arr)) уменьшается.
- когда я пытаюсь проверить каждый (i, len(arr)) каждой итерации, я получаю: (0,5), (1, 4), (2, 3), (3, 2), (4, 1)
- Как возможно i = 4 в диапазоне (1)?
Заранее спасибо!