直接排序三种方法参考——监视哨
直接插入排序三种方法参考——监视哨
今天复习所学过的数据结构的排序和查找方法,下面是对直接插入排序的几种方法的具体代码和思路,可以当做参考,当然也是方便自己加强记忆。这里只是具体一些代码,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;
}
直接排序三种方法参考——监视哨相关推荐
- express捕获全局异常的三种方法
express捕获全局异常的三种方法 参考文章: (1)express捕获全局异常的三种方法 (2)https://www.cnblogs.com/chenqionghe/p/11349521.htm ...
- 【Cocos2d-x游戏开发】解决Cocos2d-x中文乱码的三种方法
[Cocos2d-x游戏开发]解决Cocos2d-x中文乱码的三种方法 参考文章: (1)[Cocos2d-x游戏开发]解决Cocos2d-x中文乱码的三种方法 (2)https://www.cnbl ...
- “fatal error C1010”错误解决的三种方法
"fatal error C1010"错误解决的三种方法 参考文章: (1)"fatal error C1010"错误解决的三种方法 (2)https://ww ...
- 重点归纳:SPOT数据下载、影像波段数据介绍、多光谱数据模拟真彩色的三种方法【转载整合】
SPOT数据下载.影像波段数据介绍.多光谱数据模拟真彩色的三种方法 前言 课程大作业 红外波段 SPOT卫星参数 SPOT-1,2,3 SPOT-4 SPOT-5 SPOT-6,7 模拟真彩色的三种方 ...
- Python中给字典排序的三种方法(有一种你绝对没见过)
我们经常在计算机等级考试中遇到词频排序的问题,我们一般先通过生成字典的方法,统计词的频次,然后给字典排序.那么如何快速地给字典按照键值进行排序呢?下面介绍三种方法.第一种方法相对比较常见,但是第二种方 ...
- C++结构体多级排序的三种方法
C++结构体多级排序的三种方法 struct node{int chinese,math;char name[15]; }; 需求:按数学成绩从大到小排序 1.自定义比较器 //自定义比较函数 bo ...
- c++语言定义排序函数,关于C++中定义比较函数的三种方法小结
C++编程优与Pascal的原因之一是C++中存在STL(标准模板库).STL存在很多有用的方法. C++模板库中的许多方法都需要相关参数有序,例如Sort().显然,如果你想对一个集合进行排序,你必 ...
- php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析
PHP遍历数组的三种方法及效率对比分析 发布于 2015-03-04 21:55:27 | 129 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...
- MySQL提供了以下三种方法用于获取数据库对象的元数据
MySQL提供了以下三种方法用于获取数据库对象的元数据: 1)show语句 2)从INFORMATION_SCHEMA数据库里查询相关表 3)命令行程序,如mysqlshow, mysqldump 用 ...
最新文章
- (0087)iOS开发之NSString属性为什么要用copy来修饰?
- oracle 监听程序当前无法识别连接描述符中请求的服务_最新版Web服务器项目详解 04 http连接处理(上)...
- 比亚迪汉鸿蒙系统测评_华为正式进军汽车领域!鸿蒙OS车机系统加持:帮助更多车企quot;造好车quot;...
- python 浏览器,轻量级Python Web浏览器
- 推荐几个出论文的好方向!!
- [转]让iframe自适应高度-真正解决
- 认识:人工智能AI 机器学习 ML 深度学习DL
- “蚂蚁牙黑”太火,想玩就用ModelArts做一个!
- 高效的JavaScript.
- python画笔的尺寸_Matplotlib 常用画图命令总结:使用 Python 在论文中画出一手漂亮的数据图...
- VC 2015 x86的DLL绿色包(QT 5.6)
- 2019 GDUT 新生专题I选集 L题(CodeForces - 1260B)
- html caption属性,HTML caption align 属性 | 菜鸟教程
- 【Alpha版本】项目测试
- Microsoft软件保护平台服务一直占用大量CPU资源
- java eml 附件_向EML文件追加附件的Java实现
- 使用Scrapy框架爬取58同城的出租房信息
- java预研项目_YAML预研文档
- OpenGL核心技术之Gamma校正
- net logon服务无法启动