python算法与数据结构-冒泡排序算法
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對。這步做完后,最后的元素會是最大的數。
冒泡排序(英語:bubble sort)是一種簡單的排序算法。它重復地遍歷要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。遍歷數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個算法的名字由來是因為越小的元素會經由交換慢慢”浮”到數列的頂端。
代碼如下所示:
# coding:utf-8
def bubble_sort(alist):
????"""冒泡排序"""
????n = len(alist)
????#第一種不考慮效率的排序
????# for j? in range(0,n-1):
????#???? #???? for i in range(0,n-1):
????#???? #???????? if alist[i] > alist[i+1]:
????#???? #???????????? alist[i],alist[i+1] = alist[i+1],alist[i]
????#第二種考慮效率的排序
????for j? in range(n-1): #下面一行跟這行寫法一樣
????#for j in range(0, n - 1):
????????#print(n-1)? # 輸出8個8
????????#print(j)? #輸出從0到7? 這個j值等于0,對應i值的01234567
????????#這個j值等于1,對應i值的0123456
????????count = 0
????????for i in range(0,n-1-j):
????????????#print(i) #01234567?? 0123456 012345依次類推? 01 0
????????????if alist[i] > alist[i+1]:
????????????????alist[i],alist[i+1] = alist[i+1],alist[i]
????????????????count += 1
????????#???? print(i)
????????# return
????????if 0 == count:
????????????return
if __name__ == "__main__":
?????li = [54,26,93,17,77,31,44,55,20]
?????print(li)
?????bubble_sort(li)
?????print(li)
"""
res:
[54, 26, 93, 17, 77, 31, 44, 55, 20]
[17, 20, 26, 31, 44, 54, 55, 77, 93]
"""
參考資料:
網上的教程
?
總結
以上是生活随笔為你收集整理的python算法与数据结构-冒泡排序算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 亿元换算成万元计算器(亿元换算成万元)
- 下一篇: websocket python爬虫_p