插入排序
算法描述:
插入排序是一种很简单的排序算法。
插入排序的基本思想是:每一步将一个待排序的数据插入到前面已经排好序的有序序列中,直到插完所有元素为止。
图片来源于visualgo:排序
算法实现
以下是插入算法的代码实现
void INSsort(vector<int>& v)
{
for (int i = 1;i < v.size();i++)
{
if (v[i] < v[i - 1])
{
for (int j = i;j >= 1;j--)
{
if (v[j] < v[j - 1])
{
int temp = v[j];
v[j] = v[j - 1];
v[j - 1] = temp;
}
}
}
}
}
平均时间复杂度O(n^2)
最好时间复杂度O(n)
最坏时间复杂度O(n^2)
空间复杂度为O(1)