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
相关分类