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

今天复习所学过的数据结构的排序和查找方法,下面是对直接插入排序的几种方法的具体代码和思路,可以当做参考,当然也是方便自己加强记忆。这里只是具体一些代码,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. (0087)iOS开发之NSString属性为什么要用copy来修饰?
  2. oracle 监听程序当前无法识别连接描述符中请求的服务_最新版Web服务器项目详解 04 http连接处理(上)...
  3. 比亚迪汉鸿蒙系统测评_华为正式进军汽车领域!鸿蒙OS车机系统加持:帮助更多车企quot;造好车quot;...
  4. python 浏览器,轻量级Python Web浏览器
  5. 推荐几个出论文的好方向!!
  6. [转]让iframe自适应高度-真正解决
  7. 认识:人工智能AI 机器学习 ML 深度学习DL
  8. “蚂蚁牙黑”太火,想玩就用ModelArts做一个!
  9. 高效的JavaScript.
  10. python画笔的尺寸_Matplotlib 常用画图命令总结:使用 Python 在论文中画出一手漂亮的数据图...
  11. VC 2015 x86的DLL绿色包(QT 5.6)
  12. 2019 GDUT 新生专题I选集 L题(CodeForces - 1260B)
  13. html caption属性,HTML caption align 属性 | 菜鸟教程
  14. 【Alpha版本】项目测试
  15. Microsoft软件保护平台服务一直占用大量CPU资源
  16. java eml 附件_向EML文件追加附件的Java实现
  17. 使用Scrapy框架爬取58同城的出租房信息
  18. java预研项目_YAML预研文档
  19. OpenGL核心技术之Gamma校正
  20. net logon服务无法启动

热门文章

  1. [GWCTF 2019]枯燥的抽奖 1——php_mt_seed
  2. JS:简单的页面广告制作(右下角广告可自动消失)
  3. java最简单最全入门基础笔记(不简单,不全你打我)
  4. 使用schrodinger建立深度学习QSAR模型
  5. 0427-android-距离感应了解一下
  6. 使用BERT fine-tuning 用于推特情感分析
  7. 电子商务网站建设策划书范例
  8. 浙大计算机专业博士后,博士后 - 浙江大学系统医学研究中心
  9. VCC VDD VSS
  10. 马毅与来自高维度的恩赐