氣泡排序的演算法時間複雜度上o(n^2 )氣泡排序是這樣實現的:
首先將所有待排序的數字放入工作列表中。
重複2號步驟,直至再也不能交換。
氣泡排序的平均時間複雜度與插入排序相同,也是平方級的,但也是非常容易實現的演算法。
選擇排序
選擇排序是這樣實現的:
設陣列內存放了n個待排數字,陣列下標從1開始,到n結束。
i=1
從陣列的第i個元素開始到第n個元素,尋找最小的元素。
將上一步找到的最小元素和第i位元素交換。
如果i=n-1演算法結束,否則回到第3步
選擇排序的平均時間複雜度也是o(n^2)的。
1.穩定性比較插入排序、氣泡排序、二叉樹排序、二路歸併排序及其他線形排序是穩定的
選擇排序、希爾排序、快速排序、堆排序是不穩定的
2.時間複雜性比較
插入排序、氣泡排序、選擇排序的時間複雜性為o(n2)
其它非線形排序的時間複雜性為o(nlog2n)
線形排序的時間複雜性為o(n);
3.輔助空間的比較
線形排序、二路歸併排序的輔助空間為o(n),其它排序的輔助空間為o(1);
4.其它比較
插入、氣泡排序的速度較慢,但參加排序的序列區域性或整體有序時,這種排序能達到較快的速度。
反而在這種情況下,快速排序反而慢了。
當n較小時,對穩定性不作要求時宜用選擇排序,對穩定性有要求時宜用插入或氣泡排序。
若待排序的記錄的關鍵字在乙個明顯有限範圍內時,且空間允許是用桶排序。
當n較大時,關鍵字元素比較隨機,對穩定性沒要求宜用快速排序。
當n較大時,關鍵字元素可能出現本身是有序的,對穩定性有要求時,空間允許的情況下。
宜用歸併排序。
當n較大時,關鍵字元素可能出現本身是有序的,對穩定性沒有要求時宜用堆排序。
簡明演算法 氣泡排序 javascript描述
懶惰了很久,人有點生鏽,所以寫個演算法系列讓自己腦筋活躍起來。所有範例一律從小到大排序 氣泡排序 給定陣列 var list 54,26,93,17,77,31,44,88,55,20 演算法描述 將第乙個元素與第二個元素對比,此時第乙個元素比第二個元素大,交換他們,這樣較大的元素就位於第二個位置了...
n個數的排序
n個數的排序 time limit 1000ms memory limit 65536kb problem description leiq當上了體育委員,現在老師讓他去給班級裡的人排隊,leiq剛學了排序,所以他想以這種方式給班級裡的人排隊 從矮到高 他想知道排序完成後的結果。input 多組輸入...
n個數的排序
problem description leiq當上了體育委員,現在老師讓他去給班級裡的人排隊,leiq剛學了排序,所以他想以這種方式給班級裡的人排隊 從矮到高 他想知道排序完成後的結果。input 多組輸入,每組的第一行是乙個正數n 1 n 100 第二行是n個數,表示每乙個人的高度。output...