算法思想:每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止(点击此处查看)。
特征:简单直观且稳定,算法适用于少量数据的排序,时间复杂度为O(n^2)
实现代码如下:
#include <iostream>
#include <vector>
using namespace std;
//容器需要引用传递才能改变里面的值,否则为值传递
void InsertSort(vector<int>&A);
int main()
{
int i;
vector<int> A{5, 2, 4, 6, 1, 4};
InsertSort(A);
for(i = 0; i < A.size(); i ++)
cout << A[i] << " ";;
cout << endl;
for(vector<int>::iterator it = A.begin(); it != A.end(); it ++)
{
cout << *it << " ";
}
cout << endl;
return 0;
}
void InsertSort(vector<int>&A)
{
int i, j;
for(i = 1; i < A.size(); i ++)
{
int key = A[i];
j = i - 1;
while((j >= 0) && (A[j] > key))
{
A[j + 1] = A[j];
j --;
}
A[j + 1] = key;
}
}