數據結構之排序算法特點總結

1.插入與冒泡排序的速度較慢,但是當參加排序的元素局部或整體有序時,能達到較快的速度,這時對於快速排序來說,反而會變慢

1.1對初始狀態爲遞增序列的表按遞增順序排序,最省時間的是插入算法

1.2分別採用堆排序,快速排序,冒泡排序和歸併排序,對初態爲有序的表,則最省時間的是冒泡算法,

1.3對冒泡算法而言,初始序列爲反序時交換次數最多。

2.當n較小時,對於穩定性不做要求時,宜採用選擇排序,當對穩定性有要求時,宜選用插入或冒泡排序

3.待排序的記錄關鍵字在一個明顯的有限範圍內時,且空間允許,使用桶排序

4.當n較大且關鍵字元素隨機,對穩定性也無需求時採用快速排序

5.當n較大且關鍵字元素有序,對穩定性有要求,且當空間允許時,使用歸併排序,否則(對穩定性無要求)用堆排序

6.如果只想得到1000個元素組成的序列中第5個最小元素之前的部分排序的序列,用堆排序方法最快。

6.1求前k個最大元素選堆排序較好

6.2 在具有n個元素的集合中找第k(1≤k≤n)個最小元素,應使用快速排序方法。

7.對n個記錄的線性表進行快速排序爲減少算法的遞歸深度,每次區分後,先處理較短的部分

7.1設待排序記錄的個數爲n,則快速排序的最小遞歸深度爲log2n(向下取整)+1,最大遞歸深度n。

 

與初始序列之間的關係:

1.選擇排序、二路歸併、二分排序與初始序列無關,

2.冒泡、插入(?)、快速、希爾排序與原始序列有關

 

分類:

1.堆排序是選擇類排序,實際上是一顆完全二叉樹結點的層次序列

 2.在排序算法中每一項都與其它各項進行比較,計算出小於該項的項的個數,以確定該項的位置叫枚舉排序

 

外部排序:

1.外排序的基本操作過程是生成有序歸併串和歸併。

 

 

其它:

1.在執行某個排序算法過程中,出現了排序碼朝着最終排序序列位置相反方向移動,則該算法是不穩定的這個說法是錯誤的

2.堆未必是一顆平衡二叉樹(對與根節點無要求)

3.在內部排序方法中,一趟排序後只有簡單選擇排序和冒泡排序可以選出一個最大(或最小)元素,並加入到已有的有序子序列中,但要比較n-1次。選次大元素要再比較n-2次,其時間複雜度是O(n2)。從10000個元素中選10個元素不能使用這種方法。而快速排序、插入排序、歸併排序、基數排序等時間性能好的排序,都要等到最後才能確定各元素位置。只有堆排序,在未結束全部排序前,可以有部分排序結果。建立堆後,堆頂元素就是最大(或最小,視大堆或小堆而定)元素,然後,調堆又選出次大(小)元素。凡要求在n個元素中選出k(k<<n,k>2)個最大(或最小)元素,一般均使用堆排序。因爲堆排序建堆比較次數至多不超過4n,對深度爲k的堆,在調堆算法中進行的關鍵字的比較次數至多爲2(k-1)次,且輔助空間爲O(1)。

4.堆可以看作是n個結點的完全二叉樹。而敗者樹是由參加比賽的n個元素作葉子結點而得到的完全二叉樹。每個非葉(雙親)結點中存放的是兩個子結點中的敗者數據,而讓勝者去參加更高一級的比賽。另外,還需增加一個結點,即結點0,存放比賽的全局獲勝者。

5.冒泡排序結束的條件:當至多進行n-1趟起泡排序,或一趟起泡排序中未發生交換(即已有序)時,結束排序。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章