猿问

关于Python的排序!!大神来救场啊

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


asdhjhg
浏览 1266回答 0
0回答
随时随地看视频慕课网APP

相关分类

Python
我要回答