直接插入排序三种方法参考——监视哨

今天复习所学过的数据结构的排序和查找方法,下面是对直接插入排序的几种方法的具体代码和思路,可以当做参考,当然也是方便自己加强记忆。这里只是具体一些代码,https://blog.csdn.net/k0115/article/details/78994101,我是参照的这位博主解释,挺详细的。

  • 从前至后比较依次插入
#include<stdio.h>
void insert_sort(int arr[],int length)
{int i,j,k;for(i=1;i<length;i++)//i 从1开始{for(j=0;j<i;j++){if(arr[i]<arr[j]){break;}//当从前面搜索找到存在元素arr[j]]比arr[i]小则跳出查找}if(i!=j)//i与j不相等说明arr[i]所在位置不符合顺序,当i=j时从前往后搜索的与arr[i]位置吻合,则arr[i]位置不动,下面从后往前查找判断条件也是i=j时进行下个元素排序;{int key=arr[i];   //设置一个变量存放arr[i]for(k=i;k>=j;k--){arr[k]=arr[k-1];}   //将上面for循环arr[j]跳出的地方至arr[i]间元素都往后移动一个单位arr[j]=key; //由于arr[j]已经往后移动一个,则将变量存放的arr[i]放在arr[j]的位置}}for(i=0;i<length;i++)printf("%d ",arr[i]);
}
int main()
{int a[5],length;length=sizeof(a)/sizeof(a[0]);//进行数组长度的计算for(int i=0;i<length;i++){scanf("%d",&a[i]);}insert_sort(a,length);return 0;
}
  • 从后往前依次比较进行插入
#include<stdio.h>
void insert_sort(int arr[],int length)
{int i,j;for(i=1;i<length;i++){int key=arr[i];for(j=i-1;j>=0 && arr[j]>key;j--){arr[j+1]=arr[j];}arr[j+1]=key;}for(i=0;i<length;i++)printf("%d ",arr[i]);
}
int main()
{int a[5],length;length=sizeof(a)/sizeof(a[0]);//进行数组长度的计算for(int i=0;i<length;i++){scanf("%d",&a[i]);}insert_sort(a,length);return 0;}
  • 从后往前搜索查找进行插入——监视哨
 #include<stdio.h>
void insert_sort(int arr[],int length)
{int i,j;for(i=2;i<=length;i++){arr[0]=arr[i];for(j=i-1;arr[j]>arr[0];j--)//与不设监视哨比较每次少了j>=0比较,因为当j--为0 {arr[j+1]=arr[j];} //时,arr[0]与arr[j]能够进行比较,每次循环都能够节省一次 arr[j+1]=arr[0];//比较}for(i=1;i<length;i++)printf("%d ",arr[i]);
}
int main()
{int a[6],length;       //a[0]设置为监视哨,在数组总长度加1length=sizeof(a)/sizeof(a[0]);//进行数组长度的计算for(int i=1;i<length;i++)//注意这里的i初始输入值为i=1;a[0]设置为监视哨,{scanf("%d",&a[i]);}   //在这里就不再对a[0]进行输入,insert_sort(a,length);return 0;
}

直接排序三种方法参考——监视哨相关推荐

  1. express捕获全局异常的三种方法

    express捕获全局异常的三种方法 参考文章: (1)express捕获全局异常的三种方法 (2)https://www.cnblogs.com/chenqionghe/p/11349521.htm ...

  2. 【Cocos2d-x游戏开发】解决Cocos2d-x中文乱码的三种方法

    [Cocos2d-x游戏开发]解决Cocos2d-x中文乱码的三种方法 参考文章: (1)[Cocos2d-x游戏开发]解决Cocos2d-x中文乱码的三种方法 (2)https://www.cnbl ...

  3. “fatal error C1010”错误解决的三种方法

    "fatal error C1010"错误解决的三种方法 参考文章: (1)"fatal error C1010"错误解决的三种方法 (2)https://ww ...

  4. 重点归纳:SPOT数据下载、影像波段数据介绍、多光谱数据模拟真彩色的三种方法【转载整合】

    SPOT数据下载.影像波段数据介绍.多光谱数据模拟真彩色的三种方法 前言 课程大作业 红外波段 SPOT卫星参数 SPOT-1,2,3 SPOT-4 SPOT-5 SPOT-6,7 模拟真彩色的三种方 ...

  5. Python中给字典排序的三种方法(有一种你绝对没见过)

    我们经常在计算机等级考试中遇到词频排序的问题,我们一般先通过生成字典的方法,统计词的频次,然后给字典排序.那么如何快速地给字典按照键值进行排序呢?下面介绍三种方法.第一种方法相对比较常见,但是第二种方 ...

  6. C++结构体多级排序的三种方法

    C++结构体多级排序的三种方法 struct node{int chinese,math;char name[15]; }; 需求:按数学成绩从大到小排序  1.自定义比较器 //自定义比较函数 bo ...

  7. c++语言定义排序函数,关于C++中定义比较函数的三种方法小结

    C++编程优与Pascal的原因之一是C++中存在STL(标准模板库).STL存在很多有用的方法. C++模板库中的许多方法都需要相关参数有序,例如Sort().显然,如果你想对一个集合进行排序,你必 ...

  8. php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析

    PHP遍历数组的三种方法及效率对比分析 发布于 2015-03-04 21:55:27 | 129 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...

  9. MySQL提供了以下三种方法用于获取数据库对象的元数据

    MySQL提供了以下三种方法用于获取数据库对象的元数据: 1)show语句 2)从INFORMATION_SCHEMA数据库里查询相关表 3)命令行程序,如mysqlshow, mysqldump 用 ...

最新文章

  1. 【连载】优秀程序员的45个习惯之39——架构师必须写代码
  2. java 为文件及文件夹添加权限
  3. SpringBoot项目部署到独立的Tomcat上
  4. 生成唯一订单号_人人皆知却暗藏玄机的“数据库唯一标识符”
  5. ctf web必备工具_设计人员和开发人员的必备Web工具和服务
  6. 2.技巧: 用 JAXM 发送和接收 SOAP 消息—Java API 使许多手工生成和发送消息方面必需的步骤自动化...
  7. matlab mpopt,matpower安装到MATLAB下遇到的问题
  8. 小程序 图片上传php后台,微信小程序上传图片到php服务器的方法
  9. 成功解决 3DMAX报错:3D MAX application 已停止工作的解决方法
  10. 模拟与仿真两个词的区别
  11. 计算机网速单位是什么,文件大小和网速的单位
  12. 三维场景注记的配置相关(学习记录)
  13. Linux的命令和快捷键
  14. BIM模型文件下载——带有机电设备的机房模型
  15. 解决Manifest merger failed : Attribute application@appComponentFactory
  16. 看了某些蛊惑人心的招聘广告,实在忍不住想要提醒那些跃跃欲奉献的后生们...
  17. 配置maven私服nexus
  18. 基于分区表的物化视图快速刷新以及维护
  19. 基于uniapp+vue+微信小程序+安卓app电影院订票小程序H5网站设计
  20. c4droid语言贪吃蛇代码,为何c4droid运行不来贪吃蛇,还是我找的代码错了

热门文章

  1. 凭借这1080道java面试真题,成功拿到阿里,京东等八家大厂offer
  2. antd的Table列选择、列拓展
  3. bootstrap-table自定义列排序
  4. 11.js的new操作符做了哪些事情?
  5. 轨道看盘系统 通达信选股公式 看盘指标详解主图/副图
  6. 长方体体积 java程序_Java技术解决 长方体体积 问题
  7. 命题作文 在一棵IPv4地址树中彻底理解IP路由表的各种查找过程
  8. 什么是AP/AP是什么意思?
  9. 第三章 页表管理(Page Table Management)
  10. 容联云2021年Q1财报出炉:净金额留存率超110%