作為程序員,如何向孩子解釋有關(guān)搜索中的原理,你該怎么向他們解釋?


解釋太難,孩子聽不懂,解釋太簡(jiǎn)單,又把握不住簡(jiǎn)單的維度。" />

竹内纱里奈和大战黑人_欧美成人黄色小视频_91福利影视_欧美在线观看视频网站_h色网站免费观看_97综合

極客小將

您現(xiàn)在的位置是:首頁(yè) » scratch編程資訊

資訊內(nèi)容

作為程序員,你該如何向孩子解釋“什么是搜索算法”!? 用Scratch編寫小游戲:超級(jí)瑪麗

極客小將2021-01-16-
如今審核如此便捷,遇到不懂的事情百度一下就知道了,部分小伙伴還可以Google,會(huì)出來很多關(guān)于搜索的信息和數(shù)據(jù)。


作為程序員,如何向孩子解釋有關(guān)搜索中的原理,你該怎么向他們解釋?


解釋太難,孩子聽不懂,解釋太簡(jiǎn)單,又把握不住簡(jiǎn)單的維度。

超級(jí)瑪麗scratch編程圖片素材包下載地址:

https://www.jikexiaojiang.cn/165.html

如今審核如此便捷,遇到不懂的事情百度一下就知道了,部分小伙伴還可以Google,會(huì)出來很多關(guān)于搜索的信息和數(shù)據(jù)。

作為程序員,如何向孩子解釋有關(guān)搜索中的原理,你該怎么向他們解釋?

解釋太難,孩子聽不懂,解釋太簡(jiǎn)單,又把握不住簡(jiǎn)單的維度。

不如試試下面這樣的解釋方式,以現(xiàn)在的少兒編程工具Scratch為例。

還不太了解Scratch?可能在成年人的世界里不太流行,但在學(xué)校和少兒編程中知名度很高。如果你已經(jīng)很熟悉了,請(qǐng)?zhí)^此步驟。

upload/article/images/2021-01-16/9f2cac72c512f1145a66431cca8f94b7.jpg

Scratch是麻省理工媒體實(shí)驗(yàn)室終身幼兒園組開發(fā)的一套計(jì)算機(jī)程序開發(fā)平臺(tái),旨在讓程序設(shè)計(jì)語(yǔ)言初學(xué)者不需先學(xué)習(xí)語(yǔ)言語(yǔ)法便能設(shè)計(jì)產(chǎn)品。開發(fā)者期望通過學(xué)習(xí)Scratch,啟發(fā)和激勵(lì)用戶在愉快的環(huán)境下經(jīng)由操作(如設(shè)計(jì)交互故事)去學(xué)習(xí)程序設(shè)計(jì)、數(shù)學(xué)和計(jì)算知識(shí),同時(shí)獲得創(chuàng)造性思考,邏輯編程和協(xié)同工作體驗(yàn)。

在Scratch中,“角色”是通過名為“腳本”的程序來操縱的。我們來看一下讓角色邊動(dòng)邊發(fā)出聲音的腳本吧。點(diǎn)擊綠旗圖標(biāo)或者腳本本身,就可以看到角色隨著鼓動(dòng)聲動(dòng)起來。

upload/article/images/2021-01-16/8864667718f15e8ef1569d3d863ed509.jpg

腳本

upload/article/images/2021-01-16/c582f0f7342a66fec2943479f3d6ac94.jpg

角色

Scratch就是像上面這樣把這些有顏色的“模塊”排列起來制作腳本的。

如果仔細(xì)看這些模塊上寫的字,就可以知道程序向角色發(fā)出了什么指令。

這些模塊很像玩具積木,對(duì)吧!

upload/article/images/2021-01-16/240df53a95d62b2ef9f5fd43c09761f4.jpg

如上圖所示,搜索指的就是在數(shù)組中找出符合某個(gè)條件或性質(zhì)的數(shù)據(jù)。它通過搜索算法來實(shí)現(xiàn)的,下面我們就介紹一下兩種最具有代表性的搜索算法:線性搜索和二分搜索。


小游戲:超級(jí)瑪麗


線性搜索

線性搜索是在給出的數(shù)組中,按順序逐個(gè)比較每一項(xiàng),從而找到所需要數(shù)據(jù)。下面通過具體的實(shí)例(下列數(shù)據(jù)中搜索15)來逐步學(xué)習(xí)線性搜索。

upload/article/images/2021-01-16/4a14538fb0be037293775505fd66ebe1.jpg

該數(shù)組中有7個(gè)數(shù)據(jù),首先與第一位數(shù)據(jù)17進(jìn)行比較,與我們要搜索的數(shù)據(jù)15不同,因此移動(dòng)到下一位。

upload/article/images/2021-01-16/baad9a8bed280ed499625950e2e7e17a.jpg

第二位數(shù)據(jù)是2,也與15不同,因此移動(dòng)到下一位。

upload/article/images/2021-01-16/2444514b643861dd32cdd3ecdbb4a136.jpg

第三位數(shù)據(jù)是20,也與15不同,因此移動(dòng)到下一位。

upload/article/images/2021-01-16/f7564d7bb6a547d12ac925d3cbe34ec7.jpg

第四位數(shù)據(jù)是15,正是我們要搜索的數(shù)據(jù),因此搜索成功,操作結(jié)束。

upload/article/images/2021-01-16/1aed51c5ec591670aa456d09981bc42a.jpg

如果7個(gè)數(shù)據(jù)全部比較完畢也沒有找到需要的數(shù)據(jù),則表示搜索失敗。

線性搜索算法:

  • 建立列表data,并設(shè)任意數(shù)值。

  • 建立變量key,代表要搜索的數(shù)據(jù)。

  • 建立變量a,并設(shè)為1。

  • 如果a>data的項(xiàng)目數(shù),則移動(dòng)到步驟7。

  • 如果key與data的第a項(xiàng)相同,則輸出“搜索成功”并結(jié)束操作。

  • 將a加1,并移動(dòng)步驟4。

  • 輸出“搜索失敗”并完成操作。

下面我們通過在17,8,20,15這個(gè)數(shù)組中搜索20,來進(jìn)一步了解算法的運(yùn)行過程。

1、將列表data設(shè)置為17,8,20,15。將變量key設(shè)置為20。將變量a設(shè)置為1。

upload/article/images/2021-01-16/a73ae4691c2ebd9232c404e9bee5aa6c.jpg

2、a不大于data的項(xiàng)目數(shù)(4),將key的值與第一位數(shù)據(jù)17進(jìn)行比較,兩者不同,因此移動(dòng)到下一位。

upload/article/images/2021-01-16/1c3cb09f7961238fbda8bb48a2b82ab5.jpg

3、將a的值加上1,a(=2)不大于data的項(xiàng)目數(shù)(=4),將key的值與第二位數(shù)據(jù)8進(jìn)行比較,兩者不同,并移動(dòng)到下一位。

upload/article/images/2021-01-16/6fd2676424314ce5fb4a40e89beb6d8a.jpg

4、將a的值加1,a(=3)不大于data的項(xiàng)目數(shù)(=4),將key的值與第三位數(shù)據(jù)20進(jìn)行比較,兩者相同。輸出“搜索成功”并結(jié)束操作。

upload/article/images/2021-01-16/4f5bc57870a62afa10ca5dcb2341319b.jpg

編寫程序

理解了線性搜索的算法,我們?cè)趺从镁幊虂韺?shí)現(xiàn)呢,下面就來用Scrach編寫程序。

1、建立列表name和age,刪除其全部項(xiàng),并將7名學(xué)生的姓名和年齡分別添加到列表name和age中。

upload/article/images/2021-01-16/0617cc7d151f3e4db31a701ed5443ca4.jpg

2、建立變量key,并設(shè)為輸入的學(xué)生姓名。

upload/article/images/2021-01-16/acf5ca76a2348fa38c7fc970af676dad.jpg

3、建立變量a,設(shè)置為1。添加upload/article/images/2021-01-16/298aed5e21db6030c1687c4dd05a4f31.jpgupload/article/images/2021-01-16/58f70d561d4dd592d0d16b6be8cd5e15.jpg

4、如果在列表name中找到key,則由Scratch小貓說出相應(yīng)的學(xué)生姓名和年齡,并終止程序。那么綠框1處應(yīng)該填寫什么內(nèi)容呢?

upload/article/images/2021-01-16/c6ee27fcb2e31f8612b4e33e9bf5a393.jpg

5、將a的值加上1,并繼續(xù)重復(fù)執(zhí)行。

upload/article/images/2021-01-16/4472c786b4c38469658ece6090c51921.jpg

6、如果在列表name中沒能找到key,則由Scratch小貓說出“沒有”。程序創(chuàng)建完成。

upload/article/images/2021-01-16/43a451868ce1a6d04202b1687b455dbe.jpg

7、此程序運(yùn)行結(jié)果

upload/article/images/2021-01-16/ee99b1e88289d69f7cc9c8281334dd5a.jpg


二分搜索

二分搜索是指在一個(gè)有序列表中,通過逐漸縮小搜索范圍進(jìn)行搜索。下面通過具體的實(shí)例來解釋。

在下面的升序排列數(shù)據(jù)中,使用二分搜索找到數(shù)據(jù)15,。

https://cdn.china-scratch.com/timg/190729/132631A94-21.jpg

1、該數(shù)組共有7個(gè)數(shù)據(jù),將首項(xiàng)和末項(xiàng)的位置數(shù)(即1和7)分別設(shè)置low和high。

https://cdn.china-scratch.com/timg/190729/1326311511-22.jpg

2、還需要計(jì)算數(shù)組的中間位數(shù)。使用下面的數(shù)式可以計(jì)算出中間位數(shù)為4,將其設(shè)置為mid。

https://cdn.china-scratch.com/timg/190729/132631HL-23.jpg

mid位,即第4位的數(shù)據(jù)是11,將其與15進(jìn)行比較。

https://cdn.china-scratch.com/timg/190729/1326324B2-24.jpg

3、15>11,因此mid位右側(cè)的數(shù)據(jù)成為新的搜索范圍。計(jì)算可知,新范圍中的low位(即mid+1)是第5位。

https://cdn.china-scratch.com/timg/190729/1326325J1-25.jpg

4、再次計(jì)算mid位是第6位。因此將第mid位數(shù)據(jù)(=17)與15進(jìn)行比較。

https://cdn.china-scratch.com/timg/190729/1326324H0-26.jpg

5、15<17,因此將當(dāng)前mid位左側(cè)的數(shù)據(jù)重新設(shè)為新的搜索范圍。需要重新計(jì)算新的范圍中的high位,即mid-1=5。新的high位就是第5位。

https://cdn.china-scratch.com/timg/190729/1326322558-27.jpg

6、再次計(jì)算mid位是第5位。因此將第mid位的數(shù)據(jù)(=15)與15進(jìn)行比較。兩者相同,搜索結(jié)束。

https://cdn.china-scratch.com/timg/190729/1326334012-28.jpg

如果low>high,則不能找到所求數(shù)據(jù),搜索失敗。

二分搜索算法

  • 建立列表data,并將有序排列的任意數(shù)據(jù)添加到該列表。

  • 建立變量key,設(shè)為要搜索的數(shù)據(jù)。

  • 建立變量low,設(shè)置為1;變量high,設(shè)為列表data的項(xiàng)目數(shù)。

  • 如果low>high,則移動(dòng)到步驟8。

  • 建立變量mid,設(shè)為(low+high)/2。

  • 如果key與列表data的第mid項(xiàng)目,則輸出“搜索成功”,操作完成。

  • 如果key< p="">

  • 輸出“搜索失敗”,操作完成。

下面在數(shù)組 8、10、13、15、20 中搜索 15,借此實(shí)例了解算法的運(yùn)行過程。

1. 將 8、10、13、15、20 添加到列表 data。 將變量 key 設(shè)為 15。分別將變量 low和 high  設(shè)為 1 和 5,low 不大于 high,因此移動(dòng)到下一步。

https://cdn.china-scratch.com/timg/190729/1326332J4-29.jpg

2. 將變量 mid 設(shè)為(low+high)/2(=3)。

https://cdn.china-scratch.com/timg/190729/1326334a0-30.jpg

3. key 大于列表 data 的第 mid 項(xiàng)(=13),因此將 low 設(shè)為 mid+1(=4),low(=4)不大于  high,因此移動(dòng)到下一步。

https://cdn.china-scratch.com/timg/190729/1326333K7-31.jpg

4. 將變量 mid 設(shè)為(low+high)/2(=4)(設(shè)為向下取整)。

https://cdn.china-scratch.com/timg/190729/1326331N0-32.jpg

5. key 與列表 data 的第 mid 項(xiàng)(=15)相同,因此輸出“搜索成功”,完成操作。

https://cdn.china-scratch.com/timg/190729/1326334F1-33.jpg

編寫程序

1. 建立列表 name 和 age,刪除其全部項(xiàng),并將 7 名學(xué)生的姓名(按部首筆畫遞增排序)和相應(yīng)年齡分別添加到列表 name  和 age。

https://cdn.china-scratch.com/timg/190729/1326344S5-34.jpg

2. 建立變量 key,設(shè)為要搜索的數(shù)據(jù)。建立變量 low,設(shè)為 1;建立變量 high,設(shè)為列表 name 的項(xiàng)目數(shù)。

https://cdn.china-scratch.com/timg/190729/13263425Q-35.jpg

3. 添加

https://cdn.china-scratch.com/timg/190729/1326346335-36.jpg

https://cdn.china-scratch.com/timg/190729/1326342041-37.jpg

4. 如果 key 與列表 name 的第 mid 項(xiàng)相同,則說出相應(yīng)學(xué)生的姓名和年齡,程序停止。

https://cdn.china-scratch.com/timg/190729/1326345632-38.jpg

6. 如果 key 與列表 name 的第 mid 項(xiàng)不同,則變更 low 或者 high 的值,繼續(xù)重復(fù)執(zhí)行。那么綠框 2  處應(yīng)該填寫什么內(nèi)容?

https://cdn.china-scratch.com/timg/190729/132634G43-39.jpg

7. 如果直到low>high時(shí)依然沒有找到 key,則說出“沒有”。程序創(chuàng)建完成。

https://cdn.china-scratch.com/timg/190729/1326353a3-40.jpg

8.此程序運(yùn)行結(jié)果如下。

聲明:本文章由網(wǎng)友投稿作為教育分享用途,如有侵權(quán)原作者可通過郵件及時(shí)和我們聯(lián)系刪除

預(yù)約試聽課

已有385人預(yù)約都是免費(fèi)的,你也試試吧...

主站蜘蛛池模板: 国产精品一区在线播放 | 免费精品视频 | 成人精品视频在线 | 99久久久国产精品免费调教网站 | 久久国产精品久久久久久久久久 | 国产视频91在线 | 欧美另类视频在线 | 久久精品免费观看 | 一区二区国产精品 | 网曝91综合精品门事件在线 | 国产精品国产精品国产专区不蜜 | 久久国产一区二区三区 | 婷婷丁香社区 | 在线日韩一区 | 日韩精品一二三区 | 欧美91视频 | 91久久精品国产 | 亚洲午夜久久久 | 国产精品午夜一区 | 欧美日韩一区二区三区不卡 | 精久久 | 午夜国产一区 | 天天揉久久久久亚洲精品 | а√最新版天堂中文在线 | 久久久久久免费精品一区二区三区 | 成人精品在线观看 | 最新的中文字幕 | 99re在线观看 | 91精品久久久久久久蜜月 | 亚洲精品卡一 | 国产日韩一区 | 国产小视频在线播放 | 亚洲区欧美 | 五月婷综合 | 亚洲福利网 | 久久三级视频 | 久久综合99| 欧美日韩亚洲第一 | 国产精品二区在线观看 | 久久九九亚洲 | 国产麻豆精品一区二区 |