插入排序也是最基础的排序算法之一。
假设从下标为0到下标为i的元素为已经排序完毕的元素,将下标为i+1的元素插入到0至i中合适的位置,完成一次排序。i从1到n-1进行遍历,即完成插入排序。插入排序的时间复杂度为n^2
代码如下所示:
#include<iostream>
#include<stdlib.h>
#include<vector>
#include<time.h>
using namespace std;
void insert_sort(vector<int> &num)
{
for (int i = 1;i < num.size();i++)
{
int k = i;//注意这里的i是要从后往前减小的,所以要另开一个变量k
for (int j = i-1;j >=0;j--)
{
if (num.at(k) < num.at(j))
{
int tp;
tp = num.at(k);
num.at(k) = num.at(j);
num.at(j) = tp;
k--;
}
}
}
}
int main(void)
{
srand((unsigned)time(NULL));
vector<int> num;
for (int i = 0;i < 10;i++)
num.push_back(rand());
insert_sort(num);
for (int i = 0;i < num.size();i++)
cout << num.at(i) << endl;
return 0;
}
结果: