考研要求掌握的C语言程度(插入排序)

插入排序是啥类型的排序

插入类型的

插入排序经常用在啥类型场景下

用在有序序列下的基础上插入新数据

时间复杂度分析

如果是有序的基础下,最好的时间复杂度是O(n);

普通情况下是O(n^2)

插入排序的原理是啥?

插入排序就是把待插入数据讲已排好顺序的树进行循环比较然后放在合适位置

例如:

已排序好的树有1 3 6;

待排序数是5,把5依次和上面数据进行比较,最终确定放在3后面

即1 3 5 6

代码实战

本次代码实现有从后往前循环比较

复制代码
 //插入排序,本次实现从小到大排序
 void insert_sort(int nums[],int len)
 {
    int i=0,j=0;
    for(i=1;i<len;++i)//外层循环控制待排序数
    {
        int insertVal = nums[i];//用来临时存储带插入的数据
        //从待插入数据的位置的前一个开始往前面循环比较
        for(j=i-1;j>=0 && nums[j]>insertVal;--j)//前面的数据大于待插入数据,进入函数
        {
            nums[j+1]=nums[j];        
        }
        nums[j+1] = insertVal;//插入待排序数据
    }
 }

可执行代码如下

复制代码
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
 
void swap(int &a,int &b)
{
    int tmp=a;
    a=b;
    b=tmp;
}
 
 
void rangnums(int nums[],int len)
{
    srand(time(NULL));
    //初始化数组
    printf("初始化数组:");
    for(int i=0;i<len;i++)
    {
        nums[i]=rand()%100+1;
        printf("%d ",nums[i]);
    }
    puts("");
}
 
void print(int a[],int len)
{
    for(int i=0;i<len;i++)
    {
        printf("%d ",a[i]);
    }
    puts("");
}

 //插入排序
 void insert_sort(int nums[],int len)
 {
    int i=0,j=0;
    for(i=1;i<len;++i)
    {
        int insertVal = nums[i];//用来临时存储带插入的数据
        for(j=i-1;j>=0 && nums[j]>insertVal;--j)
        {
            nums[j+1]=nums[j];
        }
        nums[j+1] = insertVal;//插入待排序数据
    }
 }
 

int main()
{
    int a[10]={92 ,79 ,49, 59, 86 ,38, 94, 64, 92, 3};
    rangnums(a,10);
    insert_sort(a,10);
    print(a,10);
    
}

【注】数据结构不懂一定要动手画图

相关推荐
上弦月-编程10 分钟前
递归实现C语言菱形图案打印
c语言
Mrlxl.cn24 分钟前
计算机网络——网络层
c语言·数据结构·计算机网络·考研
Atri厨1 小时前
X86存储器的段描述符学习随笔
学习
星幻元宇VR1 小时前
VR航空航天科普设备助力航天知识普及
人工智能·科技·学习·安全·vr·虚拟现实
d111111111d1 小时前
STM32-UART封装问题解析
笔记·stm32·单片机·嵌入式硬件·学习·算法
寒秋花开曾相惜1 小时前
(学习笔记)4.2 逻辑设计和硬件控制语言HCL(4.2.1 逻辑门&4.2.2 组合电路和HCL布尔表达式)
linux·网络·数据结构·笔记·学习·fpga开发
叶子野格2 小时前
《C语言学习:指针》12
c语言·开发语言·c++·学习·visual studio
光影少年2 小时前
前端线上屏幕出现卡顿如何排查?
开发语言·前端·javascript·学习·前端框架·node.js
Jiangxl~3 小时前
IP数据云如何为不同行业提供精准IP查询与风险防控解决方案?
网络·网络协议·tcp/ip·算法·ai·ip·安全架构
一口Linux3 小时前
Linux C编程 | 从0实现telnet获取程序终端控制权
linux·运维·c语言