首頁>技術>

1,方法一

1)原理:當某一次內迴圈中沒有數字交換,則說明列表內的數字已經是從小到大排序,這時就可停止執行程式

2)程式碼:

lis =  [1,4,3,2,5, 6,7,8, 9, 10,11,12, 13, 14,15]def sortport():    for i in range(len(lis) - 1):        flag = 0        for j in range(len(lis) - 1 - i):            if lis[j] > lis[j + 1]:                lis[j], lis[j + 1] = lis[j + 1], lis[j]# 如果交換,則flag的值改為1                flag = 1        print(lis)        print(flag)# 如果沒有交換,則flag的值仍為0,可以停止執行程式        if flag == 0:            return lis    return lis

3)執行結果:

[1, 3, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

1

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

1

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

0

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

1,方法二

1)原理:最後一次交換後的數字均已有序,則下一輪排序至最後一次交換的數字即可結束

2)程式碼:

lis =  [1,4,3,2,5, 6,9,8,7, 10,11,12, 13, 14,15]def sortport():    k = len(lis) - 1    pos = 0    for i in range(len(lis) - 1):        flag = 0 #記錄是否發生交換        for j in range(min(len(lis) - 1 - i,k)):            if lis[j] > lis[j + 1]:                lis[j], lis[j + 1] = lis[j + 1], lis[j]# 如果交換,則flag的值改為1                flag = 1                pos = j #記錄最後一個交換位置                print(lis)                print(flag)        k = pos # 記錄最後一個交換位置        print(k)# 如果沒有排序,則flag的值仍為0,可以停止執行程式        if flag == 0:            print(k)            return lis    return lisif __name__ == '__main__':    sortport()    print(lis)

12
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • IT人都懂,太真實了