python冒泡排序(基礎知識)

冒泡排序(英語:Bubble Sort)

是一種簡單的排序算法。它重複地遍歷要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。遍歷數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。

冒泡排序算法的實現原理:

  1. 比較相鄰的元素。如果第一個比第二個大(升序),就交換他們兩個。
  2. 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數
  3. 針對所有的元素重複以上的步驟,除了最後一個。
  4. 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

冒泡排序的分析
在這裏插入圖片描述
那麼我們需要進行n-1次冒泡過程,每次對應的比較次數如下圖所示:
在這裏插入圖片描述
時間複雜度
最優時間複雜度:O(n) (表示遍歷一次發現沒有任何可以交換的元素,排序結束。)
最壞時間複雜度:O(n2)
穩定性:穩定

冒泡排序算法簡單實現

# -*- coding: utf-8 -*-
"""
Created on Tue Aug 20 00:09:58 2019

@author: Jayboy.chen
"""

'''
冒泡排序算法實現
'''

def bubble_sort(alist):
    for j in range(len(alist)-1,0,-1):
        # j表示每次遍歷需要比較的次數,是逐漸減小的
        for i in range(j):
            if alist[i] > alist[i+1]:
                alist[i], alist[i+1] = alist[i+1], alist[i]

# 隨便拿一組列表數據,對該列表數據進行排序
li = [54,26,93,17,77,31,44,55,20,34]
bubble_sort(li)
print(li)

結果輸出如下:
在這裏插入圖片描述
在python中,可以直接使用內置方法sort()進行排序。
出了冒泡排序,排序算法還有很多種,如選擇排序、快速排序、插入排序、希爾排序以及歸併排序等。

常見的排序算法效率比較如下圖所示:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章