# 基本思想
每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。
# C++代码
#include<iostream>
#include<vector>
using namespace std;
void insertSort(vector<int> vec)
{
if(vec.size()>0)
{
for(int i=1;i<vec.size();++i)
{
int j = i;
while(j-1>=0 && vec[j-1]>vec[j])
{
vec[j-1] = vec[j-1]+vec[j];
vec[j] = vec[j-1]-vec[j];
vec[j-1] = vec[j-1]-vec[j];
--j;
}
}
for(int i=0;i<vec.size();++i)
cout<<vec[i]<<endl;
}
}
int main()
{
vector<int> vec={9,3,1,4,2};
insertSort(vec);
return 0;
}
#性能分析
- 稳定性:稳定
- 适用性:顺序存储和链式存储的线性表。
- 空间效率:O(1)
- 时间效率:最好O(n),最差O(n2)
