氣泡排序及其Python實現

2021-09-26 03:53:18 字數 1399 閱讀 4613

氣泡排序就是重複從序列左端開始比較相鄰兩元素的大小,根據比較結果交換兩數字位置,最終使序列元素滿足公升序或降序排列。在此過程中,元素會像泡泡一樣,逐漸從左向右「浮」到序列頂端,因此該演算法被稱為「氣泡排序」。

以公升序為例,對氣泡排序演算法執行過程進行說明:

1.比較相鄰兩元素大小,若前乙個元素大於後乙個元素,則交換兩元素位置。

2.對列表順序執行1中操作直至列表最後乙個元素,此時最大元素被交換至最後一位。

3.對列表所有元素重複1,2中操作,除最後一位元素。

4.每次對越來越少的元素重複以上操作,直到沒有任何一對元素需要比較。

氣泡排序python3實現:

# -*- coding: utf-8 -*-

"""created on tue aug 13 17:19:58 2019

@author: cc

"""def

bubble_sort

(data)

:'''氣泡排序'''

n =len(data)

#temp = 0

flag =

false

# 外層迴圈控制每輪比較次數

for i in

range

(n-1):

# 內層迴圈用於比較元素並交換

for j in

range

(n-i-1)

:if data[j]

> data[j+1]

:# temp = data[j]

# data[j] = data[j+1]

#data[j+1] = temp

data[j]

,data[j+1]

= data[j+1]

,data[j]

flag =

true

#not flag表示未交換任何元素,即列表已經有序

ifnot flag:

break

print

(data)

#測試num1=[2

,4,3

,1,5

,7,8

,6,0

,8,2

] bubble_sort(num1)

num2=[1

,2,2

,3,4

] bubble_sort(num2)

測試結果:

[0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 8]

[1, 2, 2, 3, 4]

考慮最好情況:列表元素已按要求順序排列,則只需遍歷一次列表,時間複雜度為o(n)。而最差情況:列表元素逆序排列,總比較次數為(n-1)+(n-2)+…+1,時間複雜度為o(n^2)。

因此,氣泡排序平均時間複雜度為o(n^2)。

python實現氣泡排序及其優化

氣泡排序是排序演算法中比較基礎的部分,簡單原理就是 將數量大小比作輕重不同的氣泡,輕的氣泡會冒到重的氣泡之上的思想 最原始的排序 如下 def bubblesort numlist ifnot len numlist return for i in range len numlist for j i...

氣泡排序及其優化(C 實現)

include includeusing namespace std 氣泡排序的特點 每一輪冒泡過後,在過去一輪遍歷中訪問過的元素中的最大元素 一定會到達它最終應當處在的位置。基礎版本的氣泡排序 雙迴圈。外層迴圈控制冒泡次數,內層迴圈實現每一輪的 冒泡處理 先進行元素比較,再進行元素交換。void ...

Python氣泡排序演算法及其優化

氣泡排序 所謂冒泡,就是將元素兩兩之間進行比較,誰大就往後移動,直到將最大的元素排到最後面,接著再迴圈一趟,從頭開始進行兩兩比較,而上一趟已經排好的那個元素就不用進行比較了。圖中排好序的元素標記為黃色柱子 氣泡排序 演示 上python 1 defbubble sort items 2for i i...