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

今天复习所学过的数据结构的排序和查找方法,下面是对直接插入排序的几种方法的具体代码和思路,可以当做参考,当然也是方便自己加强记忆。这里只是具体一些代码,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. TVM 高效保护隐私 ML
  2. CSS三角形如何工作?
  3. Kotlin中的接口回调
  4. 微信jssdk 图片上传 JAVA_微信jssdk图片上传
  5. android中11种常见传感器的使用方法
  6. Android向本地写入一个XML文件和解析XML文件
  7. Python OpenCV——函数 cv2.findContours 运行错误【in function ‘cv::pointSetBoundingRect‘】解决方案
  8. 微软Azure予力Green Dot客服成就不凡
  9. python计算不规则图形面积_python opencv中的不规则形状检测和测量
  10. (⊙o⊙) 这个头条也坐不住了?
  11. 【ElasticSearch】es 压缩 你的 数据
  12. 官网MySQL下载速度慢的解决方法(5分钟内搞定)
  13. Java电话号码滚动抽奖_js手机号码批量滚动抽奖代码实现
  14. Web性能测试篇:AB 压力测试
  15. 从Slice_Header学习H.264(一)--片头语法元素介绍
  16. 最强大的iptv m3u8 直播源手机检测工具,批量发现问题直播源
  17. 【连载】【STM32神舟III号实验例程】SysTick实验(11)
  18. 1、锐捷交换机常用配置命令汇总,收藏备用!
  19. 淘宝网卖家必须缴纳消保保证金才能发布宝贝的商品类目
  20. 【元胞自动机】基于元胞自动机模拟社会力因素下的灾害人员疏散应急仿真附matlab代码

热门文章

  1. 围观饱醉豚与众程序员互怼有感
  2. 双十一大促客服必备话术
  3. 30天自制操作系统学习-第8天
  4. linux 25端口漏洞,Linux通过栈溢出进行提权实战(dpwwn03)
  5. 大数据分析师年薪几十万,学什么专业才能从事大数据?
  6. Tableau中的表计算
  7. SAP QM 检验点 (Inspection Point) 的使用
  8. 默然说话20160101
  9. (C++)编写一个判别素数的函数,在主函数输入一个整数,输出是否为素数的信息
  10. 静觅小白爬虫及进阶系列学习笔记