1,插入排序思想
利用 for( int i = 1 ; i < n ; i ++ )遍历整个数组,考察当前第i个元素,并将其下标记录为j(j>0)其值赋值给e,比较j和j-1元素的大小,如果当前元素较前一个元素较小( arr[j-1] > e),将前一个元素后移,并使j–,逐个完成上述操作,然后将e赋值给第j个元素。
2,代码实现
#include <iostream>
#include <algorithm>
using namespace std;
template<typename T>
void insertionSort(T arr[], int n){
for( int i = 1 ; i < n ; i ++ ) {
T e = arr[i];
int j;
for (j = i; j > 0 && arr[j - 1] > e; j--)
arr[j] = arr[j - 1];
arr[j] = e;
}
return ;
}
int main() {
int a[10] = { 10,9,8,7,6,5,4,3,2,1 };
insertionSort(a, 10);
for (int i = 0; i < 10; i++)
cout << a[i] << " ";
cout << endl;
return 0;
}