def selSort(L):
for i in range(len(L) - 1):
minIndx = i
minVal = L[i]
j = i+1
while j < len(L):
if minVal > L[j]:
minIndx = j
minVal = L[j]
j += 1
if minIndx != i:
temp = L[i]
L[i] = L[minIndx]
L[minIndx] = temp
print L发现一个问题,感觉自己有点懵....for循环下面的while j < len(L)语句和下面的if minIndx != i语句是顺序执行的还是要等while 循环break之后再执行?如果是while loop break之后在执行下面的if,那么就不对了呀?这是排序算法里面的selection算法,比方一个L=[3,5,0,9,1],执行while通过判断语句,minVal不断被赋值,但是这里没有交换数据,交换数据在下面的if中,所以就会出现重复元素,那等到while break额时候,L已经不对了啊,就算到了if也没用了。除非while和下面的if minIndx != i是同时进行。大神来解答啊??还有这个代码是对的!但是我想说selection算法为什么要写成这样?其实;这样写不是更加清爽吗???def selection_sort(L):
for i in range(len(L)):
for j in range(i+1,len(L)):
if L[i]>L[j]:
L[i],L[j]=L[j],L[i]
return L
添加回答
举报
0/150
提交
取消