氣泡排序:
時間複雜度: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...