插入排序的策略是:第i-th 循環,選定A[i],把它插入到A[1]~A[i-1]中去。
注意,這裏的A[1]~A[i-1]是按從小到大順序排好的了。
i 從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)三次插入。