算法——插入排序

算法——插入排序

博主是一个大一刚刚放暑假的大学生,大学我们只学习了c语言,现在这么卷只学c语言肯定不够,所以博主打算从零开始恶补c++顺便写文章记录一下,另外博主这个暑假还想记录一些算法基础内容欢迎关注哦。这些是是一些算法的记录和整理总结笔记要是什么时候忘记了这个算法那个算法怎么做就重新来看看,在csdn上面发是为了利用网址来编写思维导图的话比较方便~~~如果大家想跟着我一起学习也可以关注我~或者给这个文章点赞~~~谢谢大家了~

这篇是插入排序的内容

打扑克
思想:

1.从第一个元素开始,该元素可以认为已经被排序
2.取下一个元素tem,从已排序的元素序列从后往前扫描
3.如果该元素大于tem,则将该元素移到下一位
4.重复步骤3,直到找到已排序元素中小于等于tem的元素
5.tem插入到该元素的后面,如果已排序所有元素都大于tem,则将tem插入到下标为0的位置
6.重复步骤2~5

在这里插入图片描述


代码:
#include<iostream>
void swap_1 (int a,int b)
{
    int t=a;a=b;b=t;
}

void insertion_sort(int *a,int n)
{
    int i,j;
    int t=a[0];
    for (i=1;i<n;i++)
{
    for(j=i-1;j>=0;j--)
 {
    if(a[j]>a[j+1])
    {
        int t=a[j];a[j]=a[j+1];a[j+1]=t;
    }
 }
}

}
using namespace std;
int main()
{
    int n;
    cin>>n;
	int a[n];
    for (int i = 0;i < n;i++ )
	cin>>a[i];
	insertion_sort(a,n);
    for (int i = 0;i < n;i++ )
	cout<<a[i]<<' ';
	return 0;
}



时间复杂度分析:

外层for循环表示通过n-1次

内层for循环表示遍历(n-1)!次也可能就看一遍不用排序了这个时候就是O(n)

所以复杂度为O(n)~O(n2)


空间复杂度分析

没有额外申请数组等只使用了一个t来进行交换

所以复杂度为O(1)


稳定性:稳定

请添加图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

c0re

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值