直接插入排序(高级版)之C++实现

直接插入排序(高级版)之C++实现

一、源代码:InsertSortHigh.cpp

 1 /*直接插入排序思想:
 2  假设待排序的记录存放在数组R[1..n]中。初始时,R[1]自成1个有序区,无序区为R[2..n]。
 3  从i=2起直至i=n为止,依次将R[i]插入当前的有序区R[1..i-1]中,生成含n个记录的有序区。
 4  */
 5
 6 #include<iostream>
 7 using namespace std;
 8 /*定义输出一维数组的函数*/
 9 void print(int array[], int n)
10 {
11     for (int i = 0; i < n; i++)
12     {
13         cout << array[i] << " ";
14     }
15     cout << endl;
16 }
17 /*
18 一种查找比较操作和记录移动操作交替地进行的方法。
19 具体做法:
20  将待插入记录R[i]的关键字从右向左依次与有序区中记录R[j](j=i-1,i-2,…,1)的关键字进行比较:
21   ① 若R[j]的关键字大于R[i]的关键字,则将R[j]后移一个位置;
22   ②若R[j]的关键字小于或等于R[i]的关键字,则查找过程结束,j+1即为R[i]的插入位置。
23    关键字比R[i]的关键字大的记录均已后移,所以j+1的位置已经腾空,只要将R[i]直接插入此位置即可完成一趟直接插入排序。
24
25  */
26 int insertSort(int array[], int n)
27 {
28     //定义变量,记录交换次数
29     int count = 0;
30     //定义中间变量,做为临时交换变量
31     int temp;
32     //遍历数组(进行排序)
33     cout << "开始对数组进行排序了..." << endl;
34     for (int i = 1; i < n; i++)
35     {
36         for (int j = i; j >= 1; j--)
37         {
38             cout << "第" << (i + 1) << "趟第" << (j + 1) << "次排序" << endl;
39             if (array[j] < array[j - 1])
40             {
41                 temp = array[j];
42                 array[j] = array[j - 1];
43                 array[j - 1] = temp;
44                 cout << array[j] << "和" << array[j + 1] << "互换了" << endl;
45                 //输出此时数组的顺序
46                 cout << "数组此时的顺序是:";
47                 print(array, 10);
48                 //每交换一次,记录数加1
49                 count++;
50             }
51             else
52             {
53                 break;
54             }
55         }
56     }
57     cout << "数组排序结束了..." << endl;
58     return count;
59 }
60
61 int main()
62 {
63     //定义待排序的一维数组
64     int array[] = { 1, 3, 4, 5, 2, 6, 10, 9, 8, 7 };
65     //输出原始数组
66     cout << "原始数组是:" << endl;
67     print(array, 10);
68     //对数组进行排序
69     int count = insertSort(array, 10);
70     //输出排序后的数组
71     cout << "排序后的数组是:" << endl;
72     print(array, 10);
73     cout << "共交换" << count << "次" << endl;
74     return 0;
75 }

二、运行效果

时间: 2024-07-29 19:55:50

直接插入排序(高级版)之C++实现的相关文章

PHP框架Yii2.0安装(基础版、高级版)

最近农成也是切入了yiiframework 2.0,就是安装yii2.0就花费了不少的时间,为此做了很多的弯路,特此写一篇博文来给后面学习的同学少走一点的弯路.写的不好的地方欢迎各位学习的同学们能够指点出来. yii2.0的安装,官方提供了两种的安装办法,一种是通过composer来安装,另外一种是通过跟yii1.0的办法直接下载安装包来安装.至于对于第一种composer的安装,农成就不做多余的说明了,这里有很好的安装教程.点击进去就可以看到了,为此农成就不在说了,下面就给大家详细讲讲第二种通

win7 64位 家庭高级版系统忘记密码了怎么办?

有一同事离职了,他的电脑设置了密码,但没留下密码就走了,我们部门的同事叫我重装系统,我过去看了,那边的同事说,只要能进系统把密码清掉就行了,不一定要重装. 这样的机会对于我这些菜鸟来说,是最好的学习机会,于是马上百度,网上教程不少,不过说的基本上就是三种办法,因为手头有UBUNTU 12.04的光碟,于是,我选用了最简单的办法. 一.把ubuntu 12.04的光碟放进光驱里面,重启电脑,按delete键,进入BIOS,设置第一启动设备为从CDROM启动,保存退出. 二.进入ubuntu 12.

数飞表单引擎系统高级版测试及下载

公司网址:  http://www.soarwell.com   电子信箱: [email protected]下载网址1 : http://www.saas88.com/download/SZOA2015free.rar 软件简介: 数飞OA高级版V6.6主要实现表单自定义.流程自定义.公告文档管理.常用流程审批.资源管理.电子邮件收发.公文审批:可实现Office在线编辑.电子印章:支持手机浏览器访问,支持邮件提醒:可通过微信访问.可支持微信提醒.数飞OA高级版V6.6包含表单引擎.流程自定

微信整人游戏高级版 友谊的小船真会翻【微信高级教程5】

虽然愚人节已经过去好长一段时间了,但好友之间的整蛊游戏不会就这样结束.看好了,微信整人游戏高级版来了:在微信任意聊天窗口输入 //fullexit ,相当于退出功能,输入并发送后,微信会自动闪退到桌面!再次进入微信时,还需要输入登录密码!假使他真忘记密码不要来找ytkah哈,我也不知道他的微信密码. 看他在微信上撩妹心理很不是滋味?给他来一发,看他捉急得要跳起来的样子是不是很可爱?太损了,ytkah提醒您要注意控制好度,不然友谊的小船说翻真的就翻!三思而后行哈!

Win7家庭普通版、家庭高级版、专业版、旗舰版版本差别

刚才我们发了一个大图片:<Windows7.Vista.XP 三大系统功能差异比较一览图>,现在,再发一张对比图片,简要的看看Windows7家庭普通版.家庭高级版.专业版.旗舰版这四个版本的区别所在.对于购买品牌机的用户来说,主要接触的是家庭普通版和家庭高级版(Home Basic 和 Home Premium),对于破解激活的用户来说,基本的选择都是旗舰版. 避开这些不谈,看看这4个版本的区别吧,图片点击之后可以看大图片.

yii2.0-advanced 高级版项目搭建(一)

原文链接 http://www.yii-china.com/post/detail/1.html 项目搭建: 点击上方“资源下载”下载本教程所需的yii2.0高级版框架 下载之后,解压后里面有advanced文件夹,打开得到如下图所示的目录 目录结构的介绍就不在这里详细说明了,我们主要认识的是三个目录 backend(后台).common(公用). frontend(前台). 打开C:\Windows\System32\drivers\etc\hosts 将下面代码复制到hosts文件中(如下图

微信机器人高级版常见问题汇总

下面列出微信机器人高级版可能碰到的一些问题和解决方案,以便大家碰到类似的问题的时候能够快速找到答案并修正,本文也会长期更新 1. 如何安装和升级 安装:上传到 wp-content/plugins/ 目录下,然后到 WordPress 后台 > 插件 激活即可. 升级:升级稍微麻烦点,下载新的安装包,解压缩,然后覆盖旧的插件文件夹,然后到 WordPress 后台 > 插件,先停用再激活. 2. 回复微信公众号之后,为什么缩略图不能显示? 首先要解释下微信机器人是怎么获取缩略图,首先去获取当前

乐讯机器人高级版【版本验证地址】

乐讯机器人高级版,正式版发布. 继承乐讯机器人一贯的强大功能并增加许多功能. 支持乐讯四大板块的发帖: 乐讯手机高手论坛自动发帖,乐讯社区论坛自动发贴,跳骚社区论坛自动发帖,乐讯公会论论坛自动发帖 [自动发布对应论坛分类的帖子,比如:论坛属性为数码的,就发布帖子为数码类型的帖子] 2.   支持乐讯四大板块的回复: 乐讯手机高手:指定论坛/多论坛/指定品牌/单贴子盖楼-的帖子回复[多账号或者单账号回帖] 乐讯社区论坛:指定论坛/多论坛/沙发强帖/单贴子盖楼-的帖子回复[多账号或者单账号回帖] 乐

Oracle Java SE高级版

具统计,当前有90%以上的企业采用Java进行应用系统的开发,其中有很大一部分企业还在使用5年甚至10年以前版本的Java.由于这种复杂的IT环境,客户无法从开发的最底层实现风险的控制和管理,也就无法保证业务的延续性.因为国内绝大多数客户都认为Java是免费的,因此客户也无法获得Java相关的服务支持.Oracle提供商业的Java SE高级版本,为用户提供应用的风险控制与管理解决方案,包括技术支持.安全.可控的升级.合规.监控.管理.诊断等服务与工具. 在FY14,Java SE产品reven