氣泡排序最佳情況的時間複雜度,為什麼是O n

2021-09-05 08:27:55 字數 447 閱讀 7496

原本的**的時間複雜度確實應該是o(n^2),但演算法可以改進,使最佳情況時為o(n)。改進後的**為:

public void bubblesort(int arr) 

}if(didswap == false)

return;

}

}

最好情況下的時間複雜度:如果元素本來就是有序的,那麼一趟氣泡排序既可以完成排序工作,比較和移動元素的次數分別是n-1和0,因此最好情況的時間複雜度為o(n)。

最差情況的時間複雜度:如果資料元素本來就是逆序的,許喲啊進行n-1趟排序,所需比較和移動次數分別為n(n-1)/2和3n(n-1)/2。因此最壞情況子下的時間複雜度為o(n^2)。

穩定性:因為每次比較後如果兩個相鄰元素相等我們並不會將他們交換,所以冒泡不會改變相同元素的下標,所以氣泡排序是乙個穩定的排序。

**:

氣泡排序的時間複雜度

氣泡排序是一種用時間換空間的排序方法,最壞情況是把順序的排列變成逆序,或者把逆序的數列變成順序。在這種情況下,每一次比較都需要進行交換運算。舉個例子來說,乙個數列 5 4 3 2 1 進行冒泡公升序排列,第一次大迴圈從第乙個數 5 開始到倒數第二個數 2 結束,比較過程 先比較5和4,4比5小,交換...

時間複雜度為O n 的排序

題目 某公司有幾萬名員工,請完成乙個時間複雜度為o n 的演算法對該公司員工的年齡作排序,可使用o 1 的輔助空間。分析 排序是面試時經常被提及的一類題目,我們也熟悉其中很多種演算法,諸如插入排序 歸併排序 氣泡排序,快速排序等等。這些排序的演算法,要麼是o n2 的,要麼是o nlogn 的。可是...

氣泡排序 時間複雜度與空間複雜度

外迴圈是遍歷每個元素,每次都放置好乙個元素 內迴圈是比較相鄰的兩個元素,把大的元素交換到後面 等到第一步中迴圈好了以後也就說明全部元素排序好了 實現 include 列印陣列元素 void print array int array,int length printf n n void bubble...