排序算法(C#)

一、插入排序算法

1.1直接插入排序數組

算法介紹:spa

  直接插入排序(straight insertion sort)的作法是:
 
  每次從無序表中取出第一個元素,把它插入到有序表的合適位置,使有序表仍然有序。
 
  第一趟比較前兩個數,而後把第二個數按大小插入到有序表中; 第二趟把第三個數據與前兩個數從前向後掃描,把第三個數按大小插入到有序表中;依次進行下去,進行了(n-
 
1)趟掃描之後就完成了整個排序過程。
 
  直接插入排序屬於穩定的排序,最壞 時間複雜性爲O(n^2), 空間複雜度爲O(1)。
 
  直接插入排序是由兩層嵌套循環組成的。外層循環標識並決定待比較的數值。內層循環爲待比較數值肯定其最終位置。直接插入排序是將待比較的數值與它的前一個數 值進行比
 
較,因此外層循環是從第二個數值開始的。當前一數值比待比較數值大的狀況下繼續循環比較,直到找到比待比較數值小的並將待比較數值置入其後一位 置,結束該次循環。
 
值得注意的是,咱們必需用一個 存儲空間來保存當前待比較的數值,由於當一趟比較完成時,咱們要將待比較數值置入比它小的數值的後一位 插入排序相似玩牌時整理手中紙牌的過
 
程。插入排序的基本方法是:每步將一個待排序的記錄按其關鍵字的大小插到前面已經排序的序列中的適當位置,直到所有記錄插入完畢爲止。
 
算法代碼:
 

 

1.2希爾排序htm

算法介紹:排序

  屬於插入類排序,是將整個無序列分割成若干小的子序列分別進行插入排序get

  排序過程:先取一個正整數d1<n,把全部序號相隔d1的數組元素放一組,組內進行直接插入排序;而後取d2<d1,重複上述分組和排序操做;直至di=1,即全部記錄放進一個組中排序爲止io

 

  初始:d=5class

 

  49 38 65 97 76 13 27 49* 55 04循環

 

  49 13方法

 

  |-------------------|

 

  38 27

 

  |-------------------|

 

  65 49*

 

  |-------------------|

 

  97 55

 

  |-------------------|

 

  76 04

 

  |-------------------|

 

  一趟結果

 

  13 27 49* 55 04 49 38 65 97 76

 

  d=3

 

  13 27 49* 55 04 49 38 65 97 76

 

  13 55 38 76

 

  |------------|------------|------------|

 

  27 04 65

 

  |------------|------------|

 

  49* 49 97

 

  |------------|------------|

 

  二趟結果

 

  13 04 49* 38 27 49 55 65 97 76

 

  d=1

 

  13 04 49* 38 27 49 55 65 97 76

 

  |----|----|----|----|----|----|----|----|----|

 

  三趟結果

 

  04 13 27 38 49* 49 55 65 76 97

 

二、交換排序

2.1冒泡排序

2.2快速排序

三、選擇排序

3.1直接選擇排序

3.2堆排序

四、歸併排序

五、基數排序

相關文章
相關標籤/搜索