无法实现部分选择排序
Trouble implementing part of selection sort
我已经在 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)
再次阅读 Python 中的范围;你没有一个明确的概念
他们。例如,range(0, 3)
大致等同于 [0, 1, 2]
。
它在第二个值附近停止。切片也是如此。
我已经在 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)
再次阅读 Python 中的范围;你没有一个明确的概念
他们。例如,range(0, 3)
大致等同于 [0, 1, 2]
。
它在第二个值附近停止。切片也是如此。