第23课 排高矮
排高矮(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)阅读下面的程序代码和想要输出结果,完善程序。

