原理
数据分为已排序和未排序两部分,将未排序的一次插入到已排序的部分就是插入排序
时间复杂度O(n^2)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void insertionSort(vector<int>& v)
{
//没有元素或元素少于两个不需要排序
if (v.empty() || v.size() < 2)
{
return;
}
//设下标0为有序
for (int i = 1; i < v.size(); i++)
{
//因为下标0处为有序序列,则需要从后向前比较
for (int j = i; j > 0; j--)
{
if (v[j] < v[j -1]) //升序
{
swap(v[j], v[j - 1]);
}
}
}
}
int main()
{
vector<int> v = { 32,4,7,24,5,245,7,245,657,28 };
insertionSort(v);
for (auto val : v)
{
cout << val << " ";
}
cout << endl;
return 0;
}