​上一期《高射炮打蚊子丨用Visual Studio 2017写最初级的C语言程序》中,我们用Visual Studio “全宇宙最强IDE”这门大炮,打了“C语言写Hello World!”这只小蚊子,那今天我们继续,来看看经典的“冒泡排序”算法,在VS 2017环境下用C语言实现的全过程~!

题目:

用起泡法对n个数从小到大排序,n不大于100。

思路分析:

“起泡法”即我们经常听到的“冒泡排序”,其基本思路是:将相邻的两个数比较,将小的调到前头,如下图所示:

若有6个数。第一次将8和9对调,第二次将第2和第3个数(9和5)对调……如此进行5次,得到8-5-4-2-0-9的顺序,可以看到:最大的数字9已“沉底”,成为最下面一个数,而小的数“上升”。最小的数0已向上“浮起”一个位置。经第一趟(共5次比较和交换)后,已得到最大的数。然后进行第二趟比较,对余下的前面5个数按上法进行比较,如下图,经过4次比较于交换,得到次大的数8。

如此进行下去,可以推知,对6个数要比较5趟,才能对 6个数按大小顺序排列。在第一趟中要进行两个数之间的比较,共5次,在第二趟中比较4次……第5趟比较1次。如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较。

考察知识点:

一维数组、循环控制

代码实现:

根据思路分析,我们开始设计程序,基本上要分为以下几个片段

1、定义变量

  需要比较的数字数量n;比较次数m;计数i,j;存储需要比较数字的一维数组a[100]

2、记录需要比较的数字

  首先询问需要比较多少个数字,然后设计一个循环控制,循环n次,依次记录这些数字

3、进行比较

  设计一个循环控制,进行n-1趟比较,每趟比较中仍然是一个循环控制,依次比较相邻两个数大小,并替换,存储到数组中

4、输出

  设计一个循环控制,依次输出数组中完成排序的数字

#include<stdio.h>
void main()
{
int n,m,i, j,a[],t;
printf("How many numbers you need to sort?(1-100)\n"); //输入需要比较多少个数字
scanf("%d", &n);
for (i = ; i < n; i++) //输入第n个数字
{
printf("Please input the No.%d number, then press Enter: ", i+);
scanf("%d", &a[i]);
}
m = n - ;
printf("\n");
for (j=;j<m;j++) //进行n-1次循环,实现n-1趟比较
for(i=;i<m-j;i++) //每一趟比较重进行n-1-j次比较
if (a[i] > a[i + ]) //相邻两个数比较
{
t = a[i];
a[i] = a[i + ];
a[i + ] = t;
}
printf("The sorted numbers are:\n");
for (i = ; i < n; i++)
printf("%d ", a[i]);
printf("\n");
}

在Visual Studio 2017里创建新的项目和文件,参考上一期高射炮打蚊子丨用Visual Studio 2017写最初级的C语言程序,输入代码,截图如下:

Ctrl+F7编译,Ctrl+F5运行

OK,以上内容操作,我们就完成了一次冒泡排序程序的编写,大家都学会了么?

高射炮打蚊子丨在VS 2017里用C语言写经典的冒泡排序的更多相关文章

  1. 高射炮打蚊子丨用Visual Studio 2017写最初级的C语言程序

    众所周知,Visual Studio号称全宇宙最强的IDE(集成开发环境),简直可以“秒天秒地秒空气”.我们看着各种技术大会上,大神们在台上用VS演示Demo溜得飞起,然而对于一些非技术专业同学或者是 ...

  2. 高射炮打蚊子,杀鸡用绝世好剑:在SAP Kyma上运行UI5应用

    国人在表述"大材小用"这个场景时,总喜欢用一些实物来类比,比如:高射炮打蚊子. 英国QF 3.7英寸(94mm)高射炮,战斗全重超过9.3吨,全长近5米,最大射程约18公里,最大射 ...

  3. origin里用c语言编程

    学习自白东升老师的origin8.0课程. 其实是originC语言.origin中大多绘图和处理功能都是originC语言完成的,可以同时按下ctrl和shift然后点击相应的功能,就会出现每个按钮 ...

  4. WebAssembly,可以作为任何编程语言的编译目标,使应用程序可以运行在浏览器或其它代理中——浏览器里运行其他语言的程序?

    Mozilla.谷歌.微软和苹果已经决定开发一种面向Web的二进制格式.该格式名为WebAssembly,可以作为任何编程语言的编译目标,使应用程序可以运行在浏览器或其它代理中. 几年前,我们在Inf ...

  5. 在ubuntun虚拟机里安装goLang语言编程环境

    Go语言是谷歌2009发布的第二款开源编程语言. Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全.支持并行进程. 北京时间2010年 ...

  6. elasticsearch indices.recovery 流程分析(索引的_open操作也会触发recovery)——主分片recovery主要是从translog里恢复之前未写完的index,副分片recovery主要是从主分片copy segment和translog来进行恢复

    摘自:https://www.easyice.cn/archives/231 elasticsearch indices.recovery 流程分析与速度优化 目录 [隐藏] 主分片恢复流程 副本分片 ...

  7. 不积跬步无以至千里(C语言笔记)

    第一章 初始C程序     1.C程序结构         简单来说,一个C程序就是由头文件和函数组成         头文件             一条编译预处理命令:作用是在对C程序进行正式编译 ...

  8. [SoapUI] 在SoapUI里用Java语言判断Excel单元格为空或者Null时出错

    我取Excel数据时先判断cell是否为"": if(cellValue != ""){     listNumber.add(i);     cellValu ...

  9. 2017/1/8 C语言程序练习d

    有10个数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值.如果该数不在数组中,则打印出"无此数". 输入:-12 -8 12 24 45 ...

随机推荐

  1. 关于ajax中responseText不能返回脚本的问题。

    今天做后台时想用ajax返回带有脚本的HTML DOM ,发现脚本被当成字符串了,查了一下responseText()方法返回的是字符串,查了一下百度,用了正则匹配,匹配到脚本然后执行,不想当一个伸手 ...

  2. sublime 安装插件报错

    sublime  安装插件报错,大部分原因是本地防火墙开启了,关闭本地防火墙

  3. Linux 安全配置指南

    1.Bios Security 一定要给Bios设置密码,以防通过在Bios中改变启动顺序,而可以从软盘启动.这样可以阻止别人试图用特殊的启动盘启动你的系统,还可以阻止别人进入Bios改动其中的设置( ...

  4. std::tuple作为参数invoke调用函数

    template<typename Function, typename Tuple, std::size_t... Index> decltype(auto) invoke_impl(F ...

  5. Python面试题目之(针对dict或者set数据类型)边遍历 边修改 报错dictionary changed size during iteration

    # result 是一个字典, 把里面属性值是None的属性删除 for key in result: if not result[key]: del result[key] continue 但是报 ...

  6. 如何用纯 CSS 创作一个跳 8 字型舞的 loader

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/gKNMMm 可交互视频 此视频是可 ...

  7. mysql搜索不区分大小写

    mysql搜索是不区分大小写的,这种情况下我们有两种方法解决 知识前提: BINARY binary不是函数,而是一个类型转换运算符,它用来强制字符串为一个二进制字符串,可以理解为在字符串比较的时候区 ...

  8. 20145331 《Java程序设计》第2周学习总结

    20145331<Java程序设计>第2周学习总结 教材学习内容总结 3.1 类型.变量与运算符 •注释://(单行注释).//(多行注释)./ */(javadoc文档注释 )注释的内容 ...

  9. ubuntu 16.04 gtx1060 显卡安装【转】

    本文转载自:https://blog.csdn.net/u010925447/article/details/79754044 版权声明:本文为博主原创文章,未经博主允许不得转载. https://b ...

  10. heatbeat-gui实现基于nfs的mysql高可用集群

    一.简述HA高可用集群 高可用集群就是当集群中的一个节点发生各种软硬件及人为故障时,集群中的其他节点能够自动接管故障节点的资源并向外提供服务.以实现减少业务中断时间,为用户提供更可靠,更高效的服务. ...