插入排序的策略是:第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)三次插入。