少兒編程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直播課堂。

我們在下期第一個真正意義上有名的算法“冒泡算法”中再接著聊,再會。

后記,小編朋友公司研發了一個游戲化的少兒編程在線課程(5-12歲),游戲化教學結合scratch(一款在線少兒編程工具,類似樂高的積木拼搭),我家娃娃學了幾次課,非常喜歡(超預期),16次課才200多塊錢,對鍛煉孩子的思維能力和動手動力很有幫助。

感興趣的朋友可以掃描二維碼,關注一下,或微信搜索“大耳猴少兒編程”

http://www.bhucgxcz.icu/Uploads/Editor/2018-04-22/5adca08bdc212.jpg

聲明:本文章由網友投稿作為教育分享用途,如有侵權原作者可通過郵件及時和我們聯系刪除:freemanzk@qq.com