提供源**,然後這裡只討論快速排序不穩定性和時間複雜度的問題。
源**:
#include //劃分
int partition(int a,int left,int right)
a[l]=a[h]; //這裡不要寫為a[l++]=a[h]
while(l(一)不穩定問題:
不穩定指:經過排序後相同元素的值發生了變化(對調),相反穩定就是不會發生變化。
舉例:5 8 2 2' (4個元素,2'在2的右邊)
-->經過快排過後變成了 2' 2 5 8(2'在2的左邊了)
(二)時間複雜度問題:
在序列元素接近有序時,會達到最後壞複雜度o(n^2);比如:1 2 3 4 5 6 7 8
因此:快速排序演算法當序列元素的排列比較隨機時效率最高,期望達到o(nlogn);
排序演算法穩定性和不穩定性歸類
這幾天筆試了好幾次了,連續碰到乙個關於常見排序演算法穩定性判別的問題,往往還是多選,對於我以及和我一樣拿不準的同學可不是乙個能輕易下結論的題目,當然如果你筆試之前已經記住了資料結構書上哪些是穩定的,哪些不是穩定的,做起來應該可以輕鬆搞定。本文是針對老是記不住這個或者想真正明白到底為什麼是穩定或者不穩...
關於排序的穩定性與不穩定性
這幾天筆試了好幾次了,連續碰到乙個關於常見排序演算法穩定性判別的問題,往往還是多選,對於我以及和我一樣拿不準的同學可不是乙個能輕易下結論的題目,當然如果你筆試之前已經記住了資料結構書上哪些是穩定的,哪些不是穩定的,做起來應該可以輕鬆搞定。本文是針對老是記不住這個或者想真正明白到底為什麼是穩定或者不穩...
理解希爾排序的不穩定性
希爾排序是插入排序的改進 希爾排序是按照不同步長對元素進行插入排序,當剛開始元素很無序的時候,步長最大,所以插入排序的元素個數很少,速度很快 當元素基本有序了,步長很小,插入排序對於有序的序列效率很高。所以,希爾排序的時間複雜度會比o n 2 好一些。由於多次插入排序,我們知道一次插入排序是穩定的,...