冒泡排序

'''

冒泡算法的原理是經過每一輪的比較都能確定這一輪的最大數

所以到後面的比較次數都是依次少一

例如[3,4,9,1,5]
第一輪比較,比較4次
由於是有5個數,相鄰的兩個數兩兩比較,5個數需要比較4次,N個數,需要比較N-1次

3,4比較不用變
4,9比較不用變
9,1比較要交換位置 變成1,9
9,5比較需要交換位置,變成5,9
這樣就完成了第一輪的比較,第一輪確定了列表的最大一位數爲9,之後的比較就可以把9祛除了
再去比較其他的數就好了,應爲既是是比較了,位置也是不會改變,浪費資源而已

經過第一輪的比較列表變成了[3,4,1,5,9],第二輪只需要比較三次
第二輪由於最後一個確定了,只需要比較三次就好了
3,4比較不用變
4,1比較需要交換,變成1,4
4,5比較,不用變,
由此我們確定了第二大的數是5
列表變成了[3,1,4,5,9]

第三輪比較,只需要比較兩次
3,1比較需要交換,變成1,3
3,4比較不用改變,
列表變成了[1,3,4,5,9]

第四輪比較,只需要完成一次就行了
1,3比較不需要變化位置,

因此最終的列表爲[1,3,4,5,9]
'''

from random import randint
l1 = [ randint(1,100) for _ in range(10)]
print(l1)
def dubbel_sort(arr):
    k = 0
    for i in range(len(arr) - 1):
        for j in range(len(arr) - 1 - i):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
                k +=1
    print('經過%s次的比較得出的結果'%k)
    return arr

print(dubbel_sort(l1))
[90, 8, 55, 12, 71, 6, 72, 72, 60, 5]
經過25次的比較得出的結果
[5, 6, 8, 12, 55, 60, 71, 72, 72, 90]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章