Я реализовал сортировку выбором в python, но не мог понять эту крошечную часть внутреннего цикла for.
Цикл for
для j
, у меня есть диапазон от внешнего индекса i
до максимальной длины-1, это имеет для меня большой смысл, но результат не будет учитывать последнее число в массиве, и я не могу думать о причина.
Однако, если я изменю диапазон с i
на максимальную длину, это сработает. (что, насколько мне известно, должно превышать массив, поскольку alist[len(alist)]
будет считать 1 цифру, превышающую максимальное число).
#Go over the loop, find the smallest num
def swap(arr, num_1, num_2):
temp = arr[num_1]
arr[num_1] = arr[num_2]
arr[num_2] = temp
def selectionSort(alist):
for i in range(0, len(alist)-1):
min = i
# for j in range(i+1, len(alist)):
# Why len(alist)-1 doesn't work?
for j in range(i, len(alist)-1):
if alist[j] < alist[min]:
min = j
if min != i :
swap(alist,i,min)
return alist
# Test
print "-------------Test--- ----------"
A = [2,1,9,3,4,100,99,30]
print selectionSort(A)