插入排序算法
插入排序的思想分析及图解…
其属于:非线性时间比较类排序 中的插入排序
插入排序:(时间复杂度)(稳定性)![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/af77fa25e93d2b87a0073136fb9d7002.png)
算法思想:
从数组中第二个元素开始,与前面的有序数列元素依次比较,
当满足大于前者小于后者时插入其中(若到有序树列首部,则插入队首)
重复上述直至遍历到数组末尾
插入排序动态演示:
代码:
#include<iostream>
#include<vector>
using namespace std;
//插入函数定义
void insert_sort(vector<int> &arr)
{
//计算元素个数
int len = arr.size();
//遍历范围 arr[1] -arr[len-1]
for (int i = 1; i < len; ++i)
{
int j = i;
//提出待插值
int k = arr[i];
//找寻待插位置
while (j > 0 && arr[(j - 1)] > k)
{
arr[j] = arr[j - 1];
--j;
}
//插入
arr[j] = k;
}
}
int main()
{
//简单测试
vector<int> arr = { 8,5,9,6,4,5 };
cout << "排序前:";
for (auto a : arr)
cout << a << " ";
insert_sort( arr);
cout << "排序后:";
for (auto a:arr)
cout << a << " ";
return 0;
}
点个赞吧!