课程首页 › 第2部分 › 第23课

第23课 排高矮

第2部分 智能的开始 · 选择结构· 知识点:if应用、排序

排高矮(if应用、排序)

插图

将3位小精灵的身高输入系统,输出身高排序。排序是一种超酷的算法,在今后我们经常会遇到各种排序,例如冒泡排序、插入排序、选择排序、桶排序等。

高矮排序

插图

运行程序:

请输入3个数字:

升序排序后的数字:100<103<116

(1)cin>>num1>>num2>>num3:依次输入3个数字103、116、100,分别赋值给变量num1、num2、num3。

(2)num1>num2:将103和116进行比较,如果num1大于num2,则将num1的值和num2互换一下,确保矮的在前面。

插图

互换:

temp=num1;

num1=num2;

num2=temp;

先将num1的值暂存在变量temp中,再将num2的值赋值给num1,最后将存在temp中的原num1的值赋值给num2。这就实现了变量num1和num2值的互换。

103与116比较后不用换,因为是从矮到高进行排序。

插图

通过num1和num2的比较,完成这两个身高的排序,下面对互换后的num2和num3进行比较。同样地,如果num2的值大于num3的值,则将它们的值也互换一下。

116与100比较后需要互换:

插图

这样是不是就结束了呢?

总觉得不对,这样只能保证最大的数字放到了最右边。

新的num1和新的num2还需要进行比较。

插图

互换后得到100<103<116,完成了小精灵的高矮排序。

提出思考

如果想把最小的数字放到右边呢?

有了,由大变小。

插图

①运行程序:

请输入3个数字: 3.14

把最小的数字放到最右边: 12.2--8.86--3.14

②运行程序:

请输入3个数字: 98

把最小的数字放到最右边:120--148—98

输入两组不同的数字,都将最小的数字排到了最右边。

敲黑板

num1与num2比较:num1?num2。

满足大于条件,执行互换,是将大的数换到右边。

满足小于条件,执行互换,是将小的数换到右边。

但是如果将num2与num1进行比较呢?num2?num1。

插图
插图

想一想

按照这个逻辑,如果输入8个数字,请问要比较几次才能找出最大值呢?

插图
插图

巩固练习

(1)以下哪个选项可以实现将变量a和b的数值互换?()

A.

temp=a;

a=b;

b=temp;

B.

a=b;

b=a;

C.

temp=b;

a=b;

b=temp;

D.

temp=a;

b=temp;

a=b;

(2)运行以下程序,输入3个数字36、89、12,填写最后输出的结果。

插图

输出:_____________________________________________________________ __

(3)阅读下面的程序代码和想要输出结果,完善程序。

插图