氣泡排序演算法原理: 從未排序的序列的開頭開始,比較相鄰的兩個元素,將值大(小)放在右邊,每輪比較完成都會將最大(最小)放在最後一位,下一輪就只要從開頭比較到倒數第二個。以此類推,直到序列排序完畢。
對於乙個有n個元素的序列,需要進行 n-1 輪迴圈比較.
**如下:
ef bubble_sort(alist)
:"""氣泡排序"""
for j in
range(1
,len
(alist)):
# 外迴圈控制總輪數(n-1)輪
for i in
range(0
,len
(alist)
-j):
# 內迴圈控制每輪資料比較次數
if alist[i]
> alist[i+1]
: alist[i]
, alist[i+1]
= alist[i+1]
, alist[i]
return alist
氣泡排序演算法的優化
新增乙個標識來判斷原序列(或剩餘部分)是否已有序
**如下:
def
bubble_sort2
(alist)
:"""氣泡排序"""
for j in
range(1
,len
(alist)):
# 外迴圈控制總輪數(n-1)輪
count =
0# 是否有序,如果為0,則表示序列已有序
for i in
range(0
,len
(alist)
-j):
# 內迴圈控制每輪資料比較次數
if alist[i]
> alist[i+1]
: alist[i]
, alist[i+1]
= alist[i+1]
, alist[i]
count +=1if
0== count:
return
return alist
氣泡排序演算法的時間複雜度與穩定性
注:排序演算法的穩定性是指在排序的過程中不會改變相同元素彼此的位置的相對次序,反之不穩定的排序演算法經常會改變這個次序。
資料結構與演算法學習筆記
演算法基礎篇 第一章 演算法概述 首先了解一下基本的概念 1.1 什麼是演算法呢?從字面意義上理解,演算法就是用於計算的方法,用這種方法達到預期的結果。通俗的講,演算法可以理解為乙個完整的解題步驟,由一些基本的運算和規定的運算順序組成。通過這樣的解題步驟可以解決特定的問題。演算法可以抽象出5個特徵 ...
資料結構與演算法學習筆記6 排序演算法1
氣泡排序的基本思想是 遍歷需要排序的陣列,依次比較相鄰元素,把相對較大的放到後面,這樣大的數就會像冒泡一樣排在後方。public static void bubblesorting int arr if flag false else 注意 內層迴圈的退出條件是外層迴圈減去i i就是已經排好的資料個...
資料結構與演算法學習筆記(一)
資料 計算機操作的物件 資料元素 組成資料的基本基本單位 資料項 乙個資料元素可以由若干個資料項組成 資料物件 性質相同的資料元素的集合 資料結構 是相互之間存在一種或多種特定關係的資料元素的集合 資料型別 1.原子型別 不可以在分解的基本型別,包括整型,字元型 2.結構型別 由若干個型別組合而成 ...