插入排序 InsertSort

插入排序的策略是:第i-th 循環,選定A[i],把它插入到A[1]~A[i-1]中去。

注意,這裏的A[1]~A[i-1]是按從小到大順序排好的了。

從2 開始,注意A[]的下標是從1~n,共有n個元素。

template < class Type >
void InsertSort( Type  A [ ], int n ) {
     for( int i = 2 ; i <= n ; i++ ) {
          Type V = A[i] ;
          int j = i - 1 ;
          while ( ( A[j] > V )&&( j > 0 ) ){//插入元素V小於當前元
                                                                              素,則當前元素向後移動
               A[j+1] = A[j] ;
               j = j – 1 ;
          }
     A[j+1] = V ;
     return ;
}



下面是引用部分,源自經典排序算法 – 插入排序Insertion sort

經典排序算法 – 插入排序Insertion sort 
插入排序就是每一步都將一個待排數據按其大小插入到已經排序的數據中的適當位置,直到全部插入完畢。
插入排序方法分直接插入排序和折半插入排序兩種,這裏只介紹直接插入排序,折半插入排序留到“查找”內容中進行。
  圖1演示了對4個元素進行直接插入排序的過程,共需要(a),(b),(c)三次插入。


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