文章目录

  • 1.基本思想:
  • 2.图解
  • 3.代码实例

1.基本思想:

设待排序的元素放在数组R[0…n-1]中,排序过程中,R被划分成两个子区间,有序区R[0…i-1]和无序区R[i…n-1],初始时,有序区只有R[0]一个元素,直接插入排序的一趟操作是将当前无序区的开头元素R[i] (1<=i<=n-1)插入到有序区R[0…i-1]中的适当位置,使R[0…i]变为新的有序区

对于第i趟排序,如何将无序区的第一个元素R[i]插入到有序区呢?其过程是先将R[i]暂时放到tmp中,j在有序区中从后向前找(初值为i),凡是关键字大于tmp.key的记录均向后移一个位置。若找到某个R[j],其关键字小于或等于tmp.key,则将tmp 放到他们的后面,即R[j] = temp

2.图解


图片来自博主:https://blog.csdn.net/qq_37623612/article/details/80312121

3.代码实例


#include<stdio.h>typedef struct {int key;
}RecType;void InsertSort(RecType R[], int n) {                   //array待排序数组,n:数组元素数量printf("\n");int i, j;                                           //循环变量RecType temp;                                         //存储待排序元素for (i = 1; i < n; i++) {j = i;temp = R[i];                                   //待排序元素赋值给临时变量while (j > 0 && temp.key < R[j - 1].key) {      //当未达到数组的第一个元素或者待插入元素大于待比较的元素则跳出循环R[j] = R[j - 1];                            //就将该元素后移j--;                                        //下标减一,继续比较}R[j] = temp;                                    //插入位置已经找到,立即插入} for(int k = 0;k<n;k++) {printf("%d \n",R[k].key);}}int main() {RecType R[3] = {{5},{4},{7}};int n = 3;for(int k = 0;k<n;k++) {printf("%d \n",R[k].key);}printf("----------------------------");InsertSort(R,n);
}

运行结果如下

数据结构-直接插入排序讲解(C语言)相关推荐

  1. 线性表C语言locate和ETget,线性表(数据结构重难点讲解)

    <线性表(数据结构重难点讲解)>由会员分享,可在线阅读,更多相关<线性表(数据结构重难点讲解)(104页珍藏版)>请在人人文库网上搜索. 1.线性表(数据结构重难点讲解)导读: ...

  2. python思想读后感_数据结构与算法:Python语言描述读后感1000字

    <数据结构与算法:Python语言描述>是一本由裘宗燕著作,机械工业出版社出版的平装图书,本书定价:CNY 45.00,页数:343,特精心从网络上整理的一些读者的读后感,希望对大家能有帮 ...

  3. 数据结构与算法(C语言)

    第一章: 数据结构绪论 1.什么是程序:程序 = 数据结构 + 算法 2.逻辑结构&物理结构的区别用法 基本的目标就是将数据及其逻辑关系存储到计算机的内存中 一:逻辑结构: 逻辑结构是指数据对 ...

  4. 数据结构 - 直接插入排序法

    数据结构 - 直接插入排序法. 之前的博文已经介绍了 冒泡排序法 和 简单选择排序法. 其实上面两种的基本思路是一样的, 就是通过两层循环, 在每1个内循环中找到1个未排序的极值元素, 然后把这个元素 ...

  5. 资料分享:送你一本《数据结构与算法:Python语言描述》电子书!

    下图为 TIOBE 3月编程语言排行榜. 从榜单来看,曾经铁打的 Java.C.C++ 局势,早已在数月前被 Python 的闯入而打破.究其根由,并非是 C++ 的应用领域正在逐渐缩减,而是随着人工 ...

  6. 数据结构-排序算法(c语言实现篇)

    数据结构-排序算法(c语言实现篇) 排序算法是非常常用的算法,从介绍排序的基本概念,到介绍各种排序算法的思想.实现方式以及效率分析.最后比较各种算法的优劣性和稳定性. 1 排序的概念及应用 1.1 排 ...

  7. 《数据结构与抽象:Java语言描述(原书第4版)》一JI2.3 抛出异常

    本节书摘来华章计算机<数据结构与抽象:Java语言描述(原书第4版)>一书中的第2章 ,[美]弗兰克M.卡拉诺(Frank M. Carrano) 蒂莫西M.亨利(Timothy M. H ...

  8. 《数据结构与抽象:Java语言描述(原书第4版)》一2.2.1 可变大小数组

    本节书摘来华章计算机<数据结构与抽象:Java语言描述(原书第4版)>一书中的第2章 ,第2.2.1节,[美]弗兰克M.卡拉诺(Frank M. Carrano) 蒂莫西M.亨利(Timo ...

  9. 数据结构习题精解 C语言实现+微课视频(习题解答、研考试题、微课视频)

    数据结构习题精解 C语言实现+微课视频(习题解答.研考试题.微课视频) 配套 数据结构.数据结构C语言实现等经典教材的课后习题解答,著名高校典型考研试题详解.微课视频

最新文章

  1. f是一个python内部变量类型,Python基础变量类型——List浅析
  2. html文件显示不了box,Workbox.js registerNavigationRoute找不到/加载html文件
  3. sklearn使用投票器VotingClassifier算法构建多模型融合的硬投票器分类器(hard voting)并计算融合模型的混淆矩阵、可视化混淆矩阵(confusion matrix)
  4. LRU算法四种实现方式介绍
  5. HH SaaS电商系统的商品销售管理标签功能模块设计
  6. oracle数据库查看用户相关语句
  7. Spring Boot(二):Web 综合开发
  8. linkedhashmap中关于LRU算法的实现
  9. asc和desc全称_MySQL数据排序asc、desc
  10. Spring Cloud微服务实战_PDF电子书下载 高清 带索引书签目录_翟永超(著)
  11. duet太香啦啦啦啦啦啦啦啦啦啦
  12. shareX截图工具提示:shareX\Tools\ffmpeg.exe不存在。解决方案2020年
  13. 【What if 系列】拖住那架飞机!
  14. 【使用TL431校准万用表】
  15. 共建计算产业,共创数智未来
  16. java线程状态——java线程状态图
  17. HTML5中swiper实现图片查看功能
  18. MS SQL数据库备份和恢复
  19. 如何利用大数据实现精准扶贫?
  20. 消愁,一杯敬故乡,一杯敬远方

热门文章

  1. 简单的REST的框架实现
  2. 从需求出发来看关系模型与非关系模型–关系模型与非关系模型概述
  3. 十年,我的计算机生涯
  4. A Data Access Layer to persist business objects using attributes and reflection - Part II [无常译]...
  5. 设计企业网站大纲_哈尔滨企业网站设计费用,网站开发公司_华阳网络
  6. Ubuntu 16.04.6 LTS 发布:紧急修复 APT 漏洞
  7. webpack流程图
  8. ASP删除黑客建立的只读文件夹和文件
  9. SQL中的left outer join,inner join,right outer join用法
  10. HTML常用特效代码