数据结构之直接插入排序(白话解析核心代码)


作者简介:大家好我是小唐同学(๑>؂<๑),大家可以叫我小唐

个人主页:小唐同学(๑>؂<๑)的博客主页

系列专栏:数据结构

博友们如果也是新手入门数据结构我希望大家可以多加练习 数据结构题库在牛客网就有已经给大家附上链接,可以直接点击跳转:刷题点这里

牛客网支持ACM模式哦,刷算法题也很推荐哦!!!

下面上文章------》

目录

概念:

算法输入和输出:

算法思想:

实例:

代码实现:

白话解析核心代码:

时间复杂度:

空间复杂度:


概念:

直接插入排序:直接插入排序是一种最简单的排序方法,过程就是将每个待排元素逐个插入到已经排好的有序序列中。


算法输入和输出:

输入:

n个数的序列,通常直接存放在数组中,可能是任何顺序。

输出:
输入序列的一个新排列,满足从小到大的顺序(默认讨论升序,简单的修改就可以实现降序排列)。

算法思想:

每次我们从原有数据中取出一个数,插入到之前已经拍好的序列中,直到所有数全部取完,那么新的有序排列也就完成了。

实例:

我们先给出实例数组:

1 5 9 2 6 8 12

当有序数列中无元素是   则首元素 1 则为有序列

1          5 9 2 6 8 12

则首个无序元素 5 进入有序列  与有序列进行比较

1 5       9 2 6 8 12

则首个无序元素 9 进入有序列  与有序列进行比较

1 5 9       2 6 8 12

则首个无序元素 2 进入有序列  与有序列进行比较

1 2 5 9      6 8 12

以此类推

则可得出有序列

1 2 5 6 8 9 12

代码实现:


# include <stdio.h> int main() { int n; scanf("%d",&n); int a[n]; for (int i=0;i<n;i++)
{ scanf("%d",&a[i]);
} int temp; for(int i=1;i<n;i++)
{ if(a[i]<a[i-1])
    { int j;
        temp=a[i]; for(j=i-1;j>=0&&temp<a[j];j--)
        {
            a[j+1]=a[j];
        }
        a[j+1]=temp;
        
    }

} for(int i=0;i<n;i++)
    { printf("%d",a[i]);
     } 

 }

白话解析核心代码:

白话讲解直接插入排序核心算法:

i从1开始

当a[i]<a[i-1]时说明

后边的元素小于前边的元素

那就要提前

把该值进行暂时存储temp

进行for循环从后向前进行比较

只要比temp (a[i])大   则继续向前比较   把 j+1的位置进行向后填充(也就是比a[i]大的放后边)

当temp不小于a[j]时则跳出

把temp赋值给j+1

for(int i=1;i<n;i++)
{ if(a[i]<a[i-1])
    { int j;
        temp=a[i]; for(j=i-1;j>=0&&temp<a[j];j--)
        {
            a[j+1]=a[j];
        }
        a[j+1]=temp;
        
    }

时间复杂度:

最好的状态是:有序的的序列  只需要从头到尾遍历一遍时间复杂度为  O(n)

最差的状态是:全部乱序  均需要交换 时间复杂度为O(n*n)

空间复杂度:

算法中要用辅助空间  且为常量

空间复杂度为:O(1)

全部评论
数据结构与算法的全集
点赞 回复 分享
发布于 2022-08-29 13:13 河南

相关推荐

10-15 10:23
门头沟学院 Java
牛可乐的头像真牛:赶紧举报,这公司绝对是诈骗的,等你签约后工作一两个月后根据合同漏洞把你开除,并且要求你赔偿3w培训费,996是为了提前筛选心甘情愿签下合同容易受骗的群体,纯粹面向校招生精心设计的骗局
你见过哪些工贼行为
点赞 评论 收藏
分享
12-03 03:32
安徽大学 Java
点赞 评论 收藏
分享
友友们,我实在是不太明白,校招的话现在大多也是提前实习,然后转正也是需要考核的,考核通过才能转正,那这跟实习转正有什么区别啊
苦闷的仰泳鲈鱼刷了1...:提前实习,是让你提前熟悉业务的,后续是入职后可以减少试用期的(大部分是包入职的);转正实习,要是hc不够或者其他原因,让你正式offer可能都没有,这个风险很大。 ---个人看法和了解到的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务