少儿编程C++第二季——10、冒泡排序中传之找个人来做老大

网友投稿 2020-02-29 19:09

学习目标:

1、通过轮轮询比较找出数组中元素的最大值

2、加深对数组和算法的理解

各位小伙伴大家好,本期的内容只有一个,就是找出数组元素中的最大值。

按照惯例我们还是来分部实现,我总认为事出必有因,也习惯步步为营。

少儿编程不是成人的IT培训的复制品,它有自己的特点和目标。

所以我将保持一贯以来的课程风格——“大事化小,小事化了”。


先来看看如何得到两个元素之中的最大值。

https://cdn.china-scratch.com/timg/200302/1Z9391356-0.jpg

请注意看第6行,这里新建了一个额外的变量。不要问为什么要这样做,也不要问怎么想到的这种办法。

这就是一种普通的方法,我们要做的就是学会它。学会它了,它就是你的。

就好像折千纸鹤,你学会了就可以了,至于怎么设计一种新方法来折一个有四条腿的千纸鹤,那是在你学会了这个基本方法之后,才应该去考虑的事

那么第6行中,新建的变量用来干嘛呢?

用来当做一个笔记本,把两个数据元素中较大的那一个抄一份存档,仅此而已。

非要说算法的话,那核心就是第8行的if语句。

如果a[0]也就是第一个元素 比a[1]也就是第二个元素大。

那么变量Max就把a[0]的值抄下来当做自己的值,然后保存。

否则,也就是a[1]>a[0],所以较大的那一个是a[1],那么Max就把a[1]的保存起来。

这是一个基础,希望大家一定理解。


那么接下是找出三个元素中的最大值,它和上面的方法有所不同。

https://cdn.china-scratch.com/timg/200302/1Z9401602-1.jpg

其中核心的不同就是在第6行,上面的是int max,而这里我们用的是int Max=a[0]。

差异不大但思维却迥然不同,这里我们初始化了Max,让它默认将第一个元素保存为最大值。

它的算法就是,一次和后面的元素进行比较。

如果其他元素比变量Max中保存元素值大,那么就将Max中原来的元素擦掉,换上当前比较的元素,就是代码中的第10、11行。


这里的三个元素和下面比较十个元素在是算法上没有核心的区别,一起来看看。

https://cdn.china-scratch.com/timg/200302/1Z945I13-2.jpg

所不同的是,这里的十个元素需要用户自己输入。

至于获取元素中的最大值,无非是将上面的i<3改成i<10。

也就是说上面比较3次,而下面比较了10次。

这个算法对初中及以上同学来说是不难理解的,但必须建立在对C++代码比较熟悉的基础上。

本期的学习内容就为大家介绍到这里,对于前面谈到的少儿编程和成人IT培训的区别我这里就不扩展了。

以后有机会我们在直播课程中再和大家一起聊。

同时欢迎你点击下方链接进入我们的scratch直播课堂。

我们在下期第一个真正意义上有名的算法“冒泡算法”中再接着聊,再会。

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com