氣泡排序是最簡單的排序演算法之一,在這裡首先要說明的是乙個要注意的地方。
氣泡排序在最好情況下時間複雜度可以是o(n^2),也可以是o(n)。
下面看一種大家看得最多的寫法
public
void
bubblesort(int arr)
}}
}
上面這樣寫最好情況下也是o(n^2).
那麼再來看下面這種寫法
public
void
bubblesort(int arr)
}if(didswap == false)
return;
}
}
可以看到加了乙個標誌位,這時候最好的情況下複雜度就是o(n)了
最後,我認為網上公認的氣泡排序在最好情況下的時間複雜度是o(n),並且支援第二種寫法。
排序演算法 氣泡排序(改進)
假如我們運氣好,用了1輪就已經將整個序列排序好了,整個數列已然是有序的了。可是我們的排序演算法仍然 兢兢業業 地繼續執行第2輪 第3輪 直至n 1輪,這就很沒必要。也就是說如果序列已經有序,每一輪排序還是會繼續比較相鄰的元素,這就相當於做了一些沒用的操作。這種情況下,如果我們能判斷出數列已經有序,並...
氣泡排序及其改進
1.排序思想 氣泡排序也是非常簡單的排序演算法,易於理解。要點 1 也把陣列看作有序和無序部分,初始時將整個陣列視為無序 2 每次遍歷陣列中的無序部分,且兩兩比較,並將兩者中較大的元素置於後面一位,則一趟遍歷完成後,最大元素自然 沉到 無序部分的最後一位 3 減小無序部分的長度,迴圈第二步,直到陣列...
氣泡排序及其改進
氣泡排序作為最經典的演算法,雖然對大資料無用武之地。但是對於少量的資料,我們用氣泡排序,在時間複雜度上也是可以接受的,又因為它實現起來比較簡單,所以也經常的被人們使用。並且可以通過一些方法來改進最原始的氣泡排序,這種改進演算法的思路也有可取之處。前一兩天參加宜搜科技的筆試,就考到了氣泡排序。我當時就...