冒泡排序

基本思想

每次比較相鄰的兩個數,如果它們順序錯誤就把它們交換過來

對7 9 2 5 3升序排列

  • 第一步:第一位的7和第二位的9比較,如果前面的值小于后面的,就交換--> 9 7 2 5 3
  • 第二步:同上,比較第二位的7和第三位的2,不用交換--> 9 7 2 5 3
  • 第三步:比較第三位的2和第四位的5,交換--> 9 7 5 2 3
  • 第四步:比較第四位的2和第五位的3,交換--> 9 7 5 3 2
    第一次循環結束,最小的數排在了最后面,在從前往后循環4次,就可以實現降序排列

python實現冒泡排序

#!/usr/bin/python
# encoding: utf-8

# 冒牌排序(降序)

# 待排序的列表
elem = [3, 10, 7, 4, 9, 8]

for i in range(1, len(elem) - 1):
    # 第i趟冒泡排序
    for j in range(0, len(elem) - i):
        # 比較相鄰的兩個數
        if elem[j] < elem[j+1]:
            elem[j],elem[j+1] = elem[j+1],elem[j]

print(elem) # [10, 9, 8, 7, 4, 3]

時間復雜度

從最關鍵的雙層for循環可以看出,冒泡排序的時間復雜度為N的平方。

*參考資料《啊哈!算法》

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容