排序 氣泡排序及其改進版本

2021-07-09 23:46:59 字數 970 閱讀 2054

選擇排序是符合直觀(我們通常的做法)的排序方法,氣泡排序是計算機科學家的智慧型。

def

bubble_sort

(l):

n = len(l)

for _ in range(n):

for i in range(n-1):

if l[i] > l[i+1]:

l[i], l[i+1] = l[i+1], l[i]

原始的氣泡排序演算法中,共兩層迴圈,第一次內層迴圈將第一大的數排到最後,第二次的內層迴圈將第二大的數排到倒數第二的位置,同理依次類推。

# 每一次的內部迴圈不必遍歷全部元素,

# 第 k 次內部迴圈時,前k-1個元素已經排在各自的位置上

defbubble_sort

(l):

n = len(l)

for i in range(n):

for j in range(n-1-i):

if l[j] > l[j+1]:

l[j], l[j+1] = l[j+1], l[j]

# 改進版本之二

# 設定 flag 變數

defbubble_sort

(l):

n = len(l)

for i in range(n-1):

if l[i] > l[i+1]:

l[i], l[i+1] = l[i+1], l[i]

def

bubble_sort

(l):

j, n = 0, len(l)

for i in range(n-1-j):

if l[i] > l[i+1]:

l[i], l[i+1] = l[i+1], l[i]

j += 1

氣泡排序改進版

普通的氣泡排序的演算法的平均時間複雜度為o n 2 通過對一些特殊情況的研究,我們得出了這個改進版的氣泡排序,所以它的時間複雜度是 沒錯,還是o n 2 否則就叫不叫氣泡排序早就改名了 氣泡排序的時間消費主要是在比較以及交換的次數上,每一趟冒泡都會將當前序列最大的數 冒 到序列的最後,然後序列縮小乙...

氣泡排序和改進版

1.下面我們來說以下氣泡排序的原理 1 比較相鄰的元素。如果前乙個元素比後乙個元素大,就交換這兩個元素的位置。2 對每一對相鄰元素做同樣的工作,從開始第一對元素到結尾的後一對元素。終後位置的元素就是大值。例如 排序前 排序後 2.下面關氣泡排序的 第一版氣泡排序 public class bubbl...

氣泡排序及其改進

1.排序思想 氣泡排序也是非常簡單的排序演算法,易於理解。要點 1 也把陣列看作有序和無序部分,初始時將整個陣列視為無序 2 每次遍歷陣列中的無序部分,且兩兩比較,並將兩者中較大的元素置於後面一位,則一趟遍歷完成後,最大元素自然 沉到 無序部分的最後一位 3 減小無序部分的長度,迴圈第二步,直到陣列...