算法步骤描述
将第一个元素看作有序序列,后续元素当作无需序列,依次将无序序列元素插入有序序列当中,直至将最后一个元素插入到数组中,从而完成排序。
算法执行过程
代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
template<typename T> //打印模板函数
void printArrary(vector<T>& v)
{
for (vector<int>::iterator it=v.begin(); it!=v.end();it++)
{
cout << *it << " ";
}
cout << endl;
}
template<typename T>
void insertionSort(vector<T>& arr)
{
for (int i = 0; i < arr.size(); 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;
cout << "第" << i << "趟: ";
printArrary(arr);
cout << endl;
}
cout << "最终排序结果: ";
printArrary(arr);
}
int main()
{
int arr[] = { 3, 6, 4, 11, 2, 11, 10, 5 };
int length = sizeof(arr) / sizeof(arr[0]);
vector<int> v;
for (size_t i = 0; i < length; i++)
{
v.push_back(arr[i]);
}
insertionSort<int>(v);
system("pause");
return 0;
}