排序演算法關注的幾個點
1、是否是穩定排序演算法?
(1)穩定排序演算法指:排序時,相同元素不進行交換,保持原有序列的相對位置。
優點:
(1)減少不必要的交換;
(2)當排序演算法穩定時,排序結果可以為後續排序使用;
舉例:
乙個班學生已經按照學號大小排好序,此時要求按照數學成績大小再進行排序,如果成績相同,必須按照學號從小到大的順序排列。
若採用穩定的排序演算法對數學成績進行排序,則成績相同時,學號的順序滿足從小到大,不需要再次對學號進行排序;
若採用不穩定的排序演算法,則需要再次對成績相同的學生對應的學號進行排序。
所以,穩定的排序演算法能夠節省時間。
a) 穩定的排序演算法:氣泡排序、歸併排序、桶排序、插入排序、計數排序;
b) 不穩定排序演算法:選擇排序、快速排序、希爾排序、堆排序;
2、如何將不穩定排序演算法改為穩定排序?
solution method: 將每個元素加入乙個index,表示初始陣列的索引值,當不穩定排序演算法排好序之後,相同大小的元素再按照index進行排序,就轉化為穩定排序演算法。
3、時間複雜度
平均時間複雜度是o(n^2)的演算法:氣泡排序、直接插入排序、選擇排序;
平均時間複雜度是o(nlogn)演算法:快速排序、希爾排序、堆排序、歸併排序;
時間複雜度是o(n)演算法:桶排序、計數排序;
4、空間複雜度
不需要占用額外的記憶體空間的排序演算法有:
氣泡排序、選擇排序、直接插入排序、希爾排序、堆排序、快速排序;
需要額外記憶體空間的排序演算法:歸併排序、計數排序、桶排序;
5、當序列基本有序,規模較小時,採取直接插入排序演算法;
當序列較大時,採取快速排序演算法;
要求穩定時,採取歸併排序演算法。
6、每種演算法的最好、平均、最差時間複雜度;輔存空間、穩定性參照一下博文。
排序演算法總結
1 直接插入排序 1 穩定性 穩定 2 適用情況 待排記錄規模較小,或者記錄已經基本有序 2 希爾排序 1 穩定性 不穩定 2 特點 希爾排序的執行時間依賴於增量序列,它的效率比直接插入排序有較大的改進。3 氣泡排序 1 穩定性 穩定 2 特點 當待排記錄基本有序是,氣泡排序是不錯的選擇 但由於氣泡...
排序演算法總結
1 選擇排序 選擇排序的思想是依次從待排序數列中選擇最大 小 的 第二大 小 的等等,然後依次重新排列為有序數列。void selectionsort int a,int n if min i 時間複雜度o n 2 2 歸併排序 void merge int a,int left,int mid,i...
排序演算法總結
學習了這麼多的排序演算法,還沒有做個總結,呵呵 氣泡排序 氣泡排序是最慢的排序演算法。在實際運用中它是效率最低的演算法。它通過一趟又一趟地比較陣列中的每乙個元素,使較大的資料下沉,較小的資料上公升。它是 o n 2 的演算法。快速排序 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來...