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