Python演算法之 簡潔的氣泡排序

2021-10-06 19:46:56 字數 812 閱讀 3939

def bubble_sort(arr):

"""氣泡排序

原理:從前向後,把相鄰的兩個數比較,如果前者大則交換,依次向後比較,一輪結束後,選出了最大值(在最後位置)。

在剩餘的數列中繼續如此操作,這樣每次都選出了剩餘數中的最大值,供需進行n輪。

時間複雜度:o(n^2)

:param arr:

:return:

"""size = len(arr)

for i in range(size): # 共需進行n輪

# 在剩餘的資料中找出最大值,每一次外層迴圈都會使內容迴圈的次數減少1(因為每次找出乙個較大值放在了後面)

for k in range(size-i-1):

if arr[k] > arr[k+1]:

arr[k], arr[k+1] = arr[k+1], arr[k]

return arr

if __name__ == '__main__':

import numpy

array = list(numpy.random.randint(0, 50, 20))

print(array)

# [45, 38, 43, 6, 11, 8, 7, 12, 29, 5, 38, 28, 41, 31, 47, 0, 10, 13, 2, 16]

print(bubble_sort(array))

# [0, 2, 5, 6, 7, 8, 10, 11, 12, 13, 16, 28, 29, 31, 38, 38, 41, 43, 45, 47]

mr.bai

演算法(2)排序之氣泡排序

氣泡排序核心思路 每乙個元素 j 和其後面乙個元素 j 1 比較,如果前者 j 大則交換,無論交換與否,讓後面元素 j 1 何其下乙個元素 j 2 接著進行比較 看圖說明,不想寫流程了 設定指標 i,j i 從角標 0 開始,到 n 1 結束,j 每次從 1 開始,到 n i 1 結束 其實 i 表...

Python快排與氣泡排序演算法(筆記)

def quicksort data 快速排序 if len data 2 遞迴入口及出口 mid data len data 2 選取基準值,也可以選取第乙個或最後乙個元素 left,right 定義基準值左右兩側的列表 data.remove mid 從原始陣列中移除基準值 for num in...

排序演算法(快排,冒泡)

排序目的 快速查詢 排序演算法優劣的判斷條件 1.時間複雜度 2.空間複雜度 3.穩定性 關鍵字值相等的數字們,排完序之後順序不變 十大排序演算法 需要掌握的的 氣泡排序 快速排序 希爾排序 折半插入排序 堆排序 氣泡排序 依次比較第i個數與第i 1個數的大小,如果符合條件則不變,如果不符合條件,兩...