資料結構與演算法 氣泡排序

2021-10-04 22:32:44 字數 1056 閱讀 9517

氣泡排序:

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

空間複雜度:o(1)

測試:

10k 個隨機數字排序:可以看到速度不分上下。

氣泡排序      : 	0.411331 s

氣泡排序優化1 : 0.428745 s

氣泡排序優化2 : 0.416507 s

10k 個接近有序數字排序:可以看到優化版的是速度快了一些。

氣泡排序       :       0.115256 s

氣泡排序優化1 : 0.000819 s

氣泡排序優化2 : 0.000736 s

基本思路:

兩兩比較,當前位置元素和下乙個元素比較,大的放後面,小的放前面。

一輪比較完成後,最後乙個元素即為最大元素。

void

sort1

(int arr,

int n)}}

}

優化 1:

某一次排序過後這個陣列可能就已經有序了。

此時我們再進行一次迴圈,不發生交換,就說明已經有序了。

void

sort2

(int arr,

int n)}if

(is_order)

}}

優化 2:

排序區間判定。

對於 3 2 1 0 7 8 9,經過一次迴圈後變成 2 1 0 3 7 8 9,最後一次交換的位置就是無序區間。

記錄每一輪的最後一次交換位置即可。

void

sort3

(int arr,

int n)}if

(is_order)

sort_end = last_exchange;

}}

eof

資料結構與演算法 排序 氣泡排序

兩兩相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止。氣泡排序基本概念是 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此...

資料結構與演算法 排序 氣泡排序

今天來學一下十大排序 首先,我們先了解下各個排序的時間複雜度 冒泡 選擇 插入 歸併 快速 希爾 堆排序屬於比較排序 在這裡,我們預設排序是從小到大排序。乙個動態演示各種排序演算法的動畫 visualgo 如果相等的兩個元素,在排序前後的相對位置保持不變,那麼這個演算法是穩定的排序演算法。比如 5 ...

資料結構與演算法 氣泡排序

氣泡排序的思想是,從前往後 或從後往前 掃瞄,每找乙個逆序對,就將它更正過來,這樣每一輪總可以找到乙個最大值或最小值。1 從前往後掃瞄,每次找到的較大值插入到後面,第一層迴圈代表當前插入位置。public static void sinksort int nums,int start,int end...