氣泡排序就是重複從序列左端開始比較相鄰兩元素的大小,根據比較結果交換兩數字位置,最終使序列元素滿足公升序或降序排列。在此過程中,元素會像泡泡一樣,逐漸從左向右「浮」到序列頂端,因此該演算法被稱為「氣泡排序」。
以公升序為例,對氣泡排序演算法執行過程進行說明:
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...