考研要求掌握的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);
    
}

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

相关推荐
CoovallyAIHub2 小时前
中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破
深度学习·算法·计算机视觉
NAGNIP3 小时前
Serverless 架构下的大模型框架落地实践
算法·架构
moonlifesudo3 小时前
半开区间和开区间的两个二分模版
算法
moonlifesudo3 小时前
300:最长递增子序列
算法
CoovallyAIHub8 小时前
港大&字节重磅发布DanceGRPO:突破视觉生成RLHF瓶颈,多项任务性能提升超180%!
深度学习·算法·计算机视觉
CoovallyAIHub9 小时前
英伟达ViPE重磅发布!解决3D感知难题,SLAM+深度学习完美融合(附带数据集下载地址)
深度学习·算法·计算机视觉
聚客AI1 天前
🙋‍♀️Transformer训练与推理全流程:从输入处理到输出生成
人工智能·算法·llm
大怪v1 天前
前端:人工智能?我也会啊!来个花活,😎😎😎“自动驾驶”整起!
前端·javascript·算法
惯导马工1 天前
【论文导读】ORB-SLAM3:An Accurate Open-Source Library for Visual, Visual-Inertial and
深度学习·算法
骑自行车的码农1 天前
【React用到的一些算法】游标和栈
算法·react.js