考研数据结构与算法之排序专题三 直接插入排序

考研常考算法总汇 二叉树前序递归与非递归遍历算法 二叉树中序递归与非递归遍历算法 二叉树后序递归与非递归遍历算法 二叉树层次遍历算法 树的前序遍历算法 树的后序遍历算法 霍夫曼树建立与霍夫曼编码算法 KMP算法 DFS深度遍历算法 BFS广度遍历算法 普里姆(Prim)最小生成树算法 克鲁斯卡尔(Kruskal)最小生成树算法 Dijkstra最短路径算法 Floyd最短路径算法 拓扑排... 阅读详情

直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。

设数组为a[0…n-1]。

1.      初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=1

2.      将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。

3.      i++并重复第二步直到i==n-1。排序完成。

效率:从空间来看,他只需要一个记录的辅助空间,从时间来看,排序的基本操作为:比较两个关键字的大小和移动记录。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define WD_SIZE 20
#define WD_LEN 32
int main(int argc, char* argv[])
{
                 char arr[WD_SIZE][WD_LEN]= {"" };//arr[i]
                 char tmp[WD_LEN];
                 int index;
                 int i,j,bg,end;
                 int cnt=0;
                 while(gets(arr[cnt++])!=NULL&&cnt<=WD_SIZE)//!=的优先级大于&&
                {

                }
                system( "cls");
                index=0;
                 for(;index!=cnt;index++)
                {
                                puts(arr[index]);
                }
                 //插入排序
                 for(i=1;i<cnt;i++)
                {
                                 for(j=i-1;j>=0;j--)
                                {
                                                 if(strcmp(arr[j],arr[i])<0)
                                                {
                                                                 break;
                                                }
                                }
                                 //要循环右移一位
                                bg=j+1;
                                end=i;
                                strcpy(tmp,arr[end]);
                                 for(end=end-1;end>=bg;end--)
                                {
                                                strcpy(arr[end+1],arr[end]);
                                }
                                strcpy(arr[bg],tmp);
                }
                printf( "--------------------------------\n" );
                index=0;
                 for(;index!=cnt;index++)
                {
                                puts(arr[index]);
                }
                system( "pause");
                 return 0;
}
严格按定义写的代码如下:
void Insertsort1(int a[], int n)  
{  
    int i, j, k;  
    for (i = 1; i < n; i++)  
    {  
        //为a[i]在前面的a[0...i-1]有序区间中找一个合适的位置  
        for (j = i - 1; j >= 0; j--)  
            if (a[j] < a[i])  
                break;  
  
        //如找到了一个合适的位置  
        if (j != i - 1)  
        {  
            //将比a[i]大的数据向后移  
            int temp = a[i];  
            for (k = i - 1; k > j; k--)  
                a[k + 1] = a[k];  
            //将a[i]放到正确位置上  
            a[k + 1] = temp;  
        }  
    }  
}  
插入排序优化版:

void InsertSortArray(int arr[] , int n)   
{  
    for(int i=1;i<n;i++)//循环从第二个数组元素开始,因为arr[0]作为最初已排序部分   
    {  
        int temp=arr[i];//temp标记为未排序第一个元素   
        int j=i-1;  
        while (j>=0 && arr[j]>temp)/*将temp与已排序元素从大到小比较,寻找temp应插入的位置*/  
        {   
            arr[j+1]=arr[j];    
            j--;   
        }   
        arr[j+1]=temp;   
    }   
}   



【专栏必读】王道考研408数据结构+算法设计与分析万字笔记使用说明及章节导航 各位老铁思维导图在我整理完笔记后会放上去的,我需要根据王道的思维导图重新再做一遍 文章目录一:有关注意事项二:关于专栏三:学习建议四:各专栏导航(各位老铁别催,质量优先)(1)第一章:绪论(2)第二章:线性表(3)第三章:栈和队列第四章:串第五章:二叉树第六章:图 首先感谢王道大大(手动比心),很用心在做了,大家可以看其中两节是否符合胃口 (王道408考研数据结构)第五章树-第三节1:二叉树遍历(先序、中序和后序) (王道408考研数据结构)第五章树-第四节2:平衡二叉树(AVL)及其旋转 一:有. 阅读详情

相关推荐

【考研】数据结构考点——希尔排序

本文内容源于对《数据结构(C语言版)》(第2版)、王道讲解学习所得心得、笔记整理和总结。插入排序的三种方法:直接插入排序、折半插入排序和希尔排序。直接插入排序可基于顺序表或链表操作,但后两种插入方法只能基于顺序存储结构。本文内容主要针对希尔排序。分析算法,并结合例子,以图文形式讲解希尔排序的过程。【考研】数据结构考点——直接插入排序_住在阳光的心里的博客-优快云博客【考研复习:数据结构】查找(不含代码篇)_住在阳光的心里的博客-优快云博客目录前言一、基本概念二、算法步骤三、算法描述。......

qq_34438969的博客 3606

【考研】插入排序(直接插入+折半插入+希尔)

概述 排序 使关键字有序 设计排序算法指标:时间复杂度,空间复杂度 1、算法的稳定性 关键字相同的元素 相对位置不变 不能衡量算法优劣,需要根据特定的场景, 2、内排外排 排序时数据元素在内存中 排序时数据元素无法同时在内存中,需要内外移动,数据太多放不下 外排需要关注如何读写次数最少,因为需要读进去内存, 内排方法:比较移动 基数排序:不比较 推荐一个有用的网站 https://www.cs.usfca.edu/~galles/visualization/Algorithms.html 3、

weixin_43124546的博客 935

【考研】数据结构常考九个排序算法关键代码汇总

本文主要针对直接插入排序、希尔排序、快速排序、堆排序、归并排序等九个排序算法的关键代码进行汇总,方便复习。【考研】数据结构考点——直接插入排序_住在阳光的心里的博客-优快云博客【考研】数据结构考点——折半查找和折半插入排序_住在阳光的心里的博客-优快云博客【考研】数据结构考点——希尔排序_住在阳光的心里的博客-优快云博客_希尔排序dk【考研】数据结构考点——直接选择排序_住在阳光的心里的博客-优快云博客【考研】数据结构考点——堆排序(含408真题)_住在阳光的心里的博客-优快云博客。

qq_34438969的博客 2068

直接插入排序(C语言/考研)

#include <stdio.h> void insertSort(int A[],int n){ int i,j; for (i = 2; i <=n ; ++i)//0位置为哨兵位置,从2开始递增往左侧比较 { A[0]=A[i];//将当前要比较的元素赋值给哨兵 if (A[i]<A[i-1])//如果A[i]小于其前驱 { for (j = i-1; A[0]<A[j] ; --j) //循环比较i-1位置,如果当前元素(哨兵)比正在比对

Liubingzhe 444

华为MA5620配置宽带及语音实例

华为EPON配置实例1、公共部分和宽带PPPOE部分用串口用户名密码root/mduadminMA5620E>enableMA5620E#configMA5620E(config)#MA5620E(config)#sysnamebigcow/给设备起名字/****之前为公共部一、建vlan和地址bigcow(config)#vlan100...

weixin_33862041的博客 6347

基于立创EDA的8口全千兆POE交换机设计详解:RTL8370N芯片与90W大功率供电方案

本文详细解析了基于立创EDA设计的8口全千兆POE交换机方案,核心采用RTL8370N交换芯片与支持90W大功率供电的IEEE 802.3bt标准PD芯片。文章深入探讨了PSE/PD供电管理、电源架构设计、电路细节及关键散热方案,为DIY或学习POE交换机硬件设计提供了完整的开源实践指南。

weixin_29050829的博客 1万+

插入排序(java机试题)

import java.util.Scanner; public class BubbleSort { /** * 插入排序 */ public static void main(String[] args) { Scanner str = new Scanner(System.in); String[] strlist = str.nextLine().split(" ")

Allen Liu 529

第21章—技术管理篇(上):身为技术人该怎样带好团队并做好管理者

上节讲了职业规划和学习提升这两个话题,随着职业规划的不断落地,或者自己能力的不断提升,大家也会逐渐被提拔成“职级更高”的人。企业规模扩张时,员工数量也会变多,意味着Boss需要更多的人来辅助管理,而管理者会从外部招聘吗?也许会,但大多企业更喜欢从内部选拔,毕竟人的天性更希望找的人值得信赖。此时,一些能力不错、做事靠谱的老员工,就会被“赶上”管理者的位子。作管理不难,但想要“”就需要一定情商。

运维老生常谈 1366

考研:插入排序(直接插入排序、折半插入排序、希尔排序)

插入排序        这次我写的 C语言版本 的,因为好多学校的程序设计都不考Java,考的 C/C++ ,而且如果你懂 Java 的话,把 C/C++翻译成Java是比较容易的 ,但是你要把 Java翻译成C/C++是有点儿难受的 ,所以这次我就没有写Java版了,如果前面的堆排序大家需要Java版本,可以在下面留言,下次补上。 一、直接插入排序 排序思想: 第一次以第一个为一个有序序列(因为一个元素的时候,自然就有序)。 然后

qq_39906334的博客 547

【机器学习】一文搞懂算法模型之:Transformer

必会算法模型之:Transformer

商务合作 | 面试培训 | 职场规划 ==>主页扫码 5609

YOLOv8的二次创新 | 结合iRMB与EMA打造全新的iEMA机制,提升动态检测性能【附保姆级代码】

YOLOv8继承了YOLO系列的轻量化和高效检测特性,同时通过改进的架构设计使得其在实时场景下具有更高的检测精度。然而,随着检测需求的增加,尤其是在动态目标检测和长时间序列检测中,YOLOv8的鲁棒性依然可以提升。通过iEMA机制的引入,我们将在这些方面进行进一步优化。iRMB模块是我们对传统Residual Block的进一步改进。通过多层特征提取,iRMB能够捕捉更多层次的特征信息,并通过引入轻量化的残差结构,提升计算效率。

一键难忘的博客 3085

《考研数据结构-插入排序》

插入排序有三种算法 1.直接插入排序 算法的思想比较简单,比如待排序序列 {5,4,6,2} ,进行从小到大排序,则从第一个元素开始,与其之前所有的元素进行比较 第一个5之前没有则还是 {5,4,6,2} 第二个4与5比较进行交换位置 {4,5,6,2} 第三个6与5比较,大于后不再进行比较,因为5之前已经有序(请注意思考为什么) 序列不 变{4,5,6,2} 第四个2需要与6,5,4都要比较 {2,4,5,6} **对于刚才的提问,可以设想下一个待比较元素之前的元素都是有序的,所以只有更小

weixin_45540964的博客 206

Qt入门教程【环境搭建篇】Qt6+Mingw+QMake+QtCreator

Qt Windows平台安装

小鱼酱的博客 2万+

【考研】数据结构考点——直接插入排序

本文内容源于对《数据结构(C语言版)》(第2版)、王道讲解学习所得心得、笔记整理和总结。插入排序的三种方法:直接插入排序、折半插入排序和希尔排序。本文内容主要针对直接插入排序,包括了基于顺序表、带头结点单链表和不带头结点单链表的直接插入排序算法。优快云21天学习挑战赛。......

qq_34438969的博客 4047

LeRobot 官方论文:一个用于端到端机器人学习的开源库

本文介绍了一个名为LeRobot的开源库,旨在解决机器人学习领域的碎片化问题。该库提供了端到端的技术栈,包括统一的机器人中间件API、标准化的数据集格式(LeRobotDataset)、优化的推理栈以及多种最先进机器人学习算法的实现。LeRobot支持多种低成本开源机器人平台(如SO-10X、ALOHA-2等),通过共享中间件实现便捷的遥操作和数据收集。其数据集格式已广泛应用于社区,截至2025年9月已有16,000多个数据集公开共享。该库还支持流式处理大规模数据,降低了研究门槛。在模型方面,LeRobot

2506_90492529的博客 906

TPAMI 2025 | 从缺失碎片到杰作:基于上下文自适应扩散的图像修复

图像修复是一项具有挑战性的任务,尤其是要确保生成的内容与图像的现有部分无缝融合。尽管最近的扩散模型展现出了潜力,但它们在保持已知区域和未知(缺失)区域之间的连贯性方面常常遇到困难。这个问题源于扩散过程中缺乏明确的空间和语义对齐,导致生成的内容无法与原始图像平滑融合。此外,扩散模型通常依赖全局学习分布,而非局部特征,这使得生成的图像部分与现有图像部分之间存在不一致。在这项工作中,作者提出了ConFill,这是一个新颖的框架,引入了上下文自适应差异(CAD)模型,以确保在整个扩散过程中,已知区域和未知区域的中间

小白学视觉 240

考研心得:考研数据结构算法大全

本人考研的算法笔记,包含考研数据结构会涉及到的算法,全部掌握让你考研算法题稳稳拿下!!

PCGuo999的博客 2万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

22计算机408考研—数据结构—排序(详解加例题)

排序 排序的基本概念 顾名思义,给一个无序数组的值进行顺序存储 原数组:2 3 1 5 6 4 8 9 7 排序后:1 2 3 4 5 6 7 8 9 直接插入排序 思路: 插入 == 把数插进去 也是两层循环 数组num 第一层循环从下标为1的值开始,循环变量为i 第二层循环就是把第一层的值拿出来,然后从第i-1个向前循环,找到第一个小于num[i]的值, 这个值的下标如果是j-1的话,那么num[j]就是第一个大于num[i]的值 把num[i]用一个变量temp保存一下 把下标为j到i-1的值依次向

日常发呆 2万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

王道数据结构课代表 - 考研数据结构 第八章 排序(内部排序:八大排序动图演示与实现 + 外部排序) 究极精华总结笔记(C版本)

数据结构与算法 笔记导航🚥🚥🚥 🥬 第一章 绪论 🥕 第二章 线性表 🥪 第三章 栈和队列 🍊 第四章 串-KMP(看毛片算法) 🍒 第五章 树和二叉树 🍀 第六章 图 🍚 第七章 查找(B树、散列表) 🧄 第八章 排序 (内部排序:八大排序动图演示与实现 + 外部排序) 🍔 数据结构与算法 复试精简笔记 🎨 408 全套初复试笔记汇总 传送门 🏃‍🏃‍🏃‍ 如果本篇文章对大家起到帮助的话,跪求各位帅哥美女们,求赞👍 、求收藏、求关注!

clzZ2的博客 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

数据结构算法【考研】

目录: 1.1 统计出单链表HL中结点的值等于给定值X的结点数 2.1 设有一组初始记录关键字序列(K1,K2,… Kn),要求设计一个算法能够在 O(n) 的时间复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于 Ki ,右半部分的每个关键字均大于等于 Ki 2.2 设有两个集合A和集合B,要求设计生成集合C=A∩B的算法,其中集合A、B和C用链式存储结构表示 3.1 设...

WU2629409421perfect的博客 1万+

王道数据结构-考研笔记

本数据结构笔记配合王道视频食用,效果更佳。若有条件,可彩印成册,涂写勾画,记出自己的笔记,内容若有错误,请见谅。本数据结构笔记内容绝大部分来自王道数据结构视频,部分来自《大话数据结构》,希望能够帮助到在考研路上的诸位。一路生花吧!

weixin_51297735的博客 6980

(考研必看)最全数据结构排序算法性能分析与比较!!!

数据结构所有排序算法性能分析与比较 通过对数据结构的学习,我发现数据结构中各种排序算法的排序方法,过程,以及时间性能,空间性能都比较容易混淆,现就这些情况做如下总结,希望对大家有所帮助。 起泡排序(冒泡排序) 首先取第一个数与第二个数比较,若一大于二,则两数进行交换,若数一小于数二,则将第二个数与第三个数相比较,若数二小于数三,则不交换,若数二大于数三,则将数二与数三交换,以此类推,一直到最后一个...

璇小姐的博客 2501

排序大杂烩(数据结构考研版)

在学习排序的时候,学的排序越多发现自己越晕乎,感觉每个排序的思想都大差不差的,于是我决定总结一下,花了不少时间,在这个过程中我发现,即使只是对算法的思想很清楚,但自己要是没有真真切切的把他用代码实现了,还是不算理解的,在总结的过程中我发现算法的思想比起代码实现能更容易理解,我试图通过自己对算法思想的理解尝试自己实现代码,但往往写出来即使能够实现也感觉很生硬,查阅资料后发现,原来一种算法的实现不仅仅在于其思路的优越,还有实现起来逻辑上的精巧,算法的逻辑十分巧妙,是可以用很简洁的代码实现起来的高楼大厦。

m0_63389781的博客 1751

数据结构篇——五分钟带你记住常见排序算法口诀

一、前言 二、引言 1、概念 2、与生活相关

ac不知深的博客 5355

王道考研数据结构课后题代码题(2026版)——排序部分

以王道考研《数据结构》辅导书(2026版)课后习题代码题部分为参考依据,给出课后习题代码题的可执行代码的实现,本合集使用编程语言以C/C++语言为主

ppqq980532的博客 1660

考研 C与数据结构代码总结目录页

文章目录一、CC的应用位运算二、数据结构链表栈队列树图排序 前言:2019考研,我考的专业课是数据结构(含C语言程序设计),在考研备考期间,初学数据结构,感觉也是很曲折。刚开始复习看着每道题只有关键代码很头疼,为了保证自己的代码有同样的效果,不得不花很多时间去完善非重点部分的代码来完整运行起来,暑假写了挺多这种细枝末节的代码,也记录了一些放在我的Github上,不过没有整理目录,看着很乱,今天无意...

记录时光的脚步 1809
上一篇: 指针小节
下一篇: Linux环境下Log4cpp-1.1.1 的下载、安装、配置
For_dongyang
博客等级 码龄12年 10粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

For_dongyang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值