資訊內容
教程資源|Scratch不能實現冒泡法和選擇法排序?
排序是程序設計中重要的算法之一,比較基礎的排序方法有冒泡法和選擇法,今天我們用Scratch制作一個模擬冒泡法和選擇法排序的程序。讓我們先看看運行效果吧。
一、效果預覽
點擊小綠旗運行后,舞臺區生產40個大小不同的紅色棒圖。根據提示按下鍵盤上的空格鍵可以通過輸入1或2選擇冒泡法排序和選擇法排序。如果輸入1,紅色棒圖按照冒泡法排序的規則從小到大排列;如果輸入2,紅色棒圖按照選擇法排序的規則從小到大排列。效果如圖1所示。

圖1 程序運行效果
二、冒泡法和選擇法排序簡介
1.冒泡法
冒泡排序(Bubble Sort),是一種計算機科學領域的較簡單的排序算法。它重復地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序與目標不符,就把他們交換過來。走訪元素的工作是重復地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。
這個算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名“冒泡排序”。
冒泡排序時,如果兩個元素相等,是不會再交換的;如果兩個相等的元素沒有相鄰,那么即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前后順序并不會改變,所以冒泡排序是一種穩定排序算法。
2.選擇法排序
選擇排序(selection sort),另外一種計算機科學領域的較簡單的排序算法。工作原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置或者末尾,然后,再從剩余未排序元素中繼續尋找最?。ù螅┰兀缓蠓诺揭雅判蛐蛄械钠鹗嘉恢没蛘吣┪病R源祟愅疲钡饺看判虻臄祿嘏磐辍?
這種算法排序過程需要反復從未排序元素中選擇最大或者最小元素,直至完成排序。因此,將這種算法稱為選擇排序算法。
由于在選擇的過程中,相同的元素有可能改變初始排列順序,所以選擇排序是不穩定的。
三、程序制作過程
首先,從庫中選擇一個合適的背景圖。然后需要導入紅色線條素材,作為棒圖角色(也可以繪制),然后再建立一個空白角色。設置完成后的背景和角色如圖4所示,另外還導入一個合適的聲音素材,作為排序完成后的提示音。

圖2 程序角色列表
接下來就是制作程序積木塊了。在制作程序積木塊前,先設置如圖3所示變量。其中,克隆體編號、克隆體大小為棒圖角色的私有變量。

圖3 程序中設置的變量
為了存放棒圖角色克隆體的編號和大小數據,設置了兩個列表,如圖4所示。其中,克隆體編號列表用于存放克隆體的編號;隨機數列表用于存放克隆體的大小。

圖4 程序中設置的列表
背景中的腳本主要用于程序初始化,如圖5所示

圖5 背景中腳本
空白角色中主要有[當小綠旗被點擊]事件下的腳本和[當按下空格鍵]事件下的腳本,如圖6和圖7所示,另外[當按下空格鍵]事件下的腳本中還用到了自定義積木,其功能如圖8和圖9所示。

圖6 空白角色[當小綠旗被點擊]事件下的腳本

圖7空白角色[當按下空格鍵]事件下腳本

圖8 尋找最大值自定義積木

圖9 尋找最大值項自定義積木
棒圖角色中腳本有[當接收到生成克隆體]事件下腳本、[當作為克隆體啟動時]事件下腳本、[當接收移動克隆體冒泡法]事件下腳本、[當接收移動克隆體選擇法]事件下腳本,分別如圖10-13所示。

圖10 棒圖角色[當接收到生成克隆體]事件下腳本

圖11 棒圖角色[當作為克隆體啟動時]事件下腳本

圖12 棒圖角色[當接收到移動克隆體冒泡法]事件下腳本

圖13 棒圖角色[當接收到移動克隆體選擇法]事件下腳本
四、測試與總結
通過測試發現,冒泡排序法和選擇排序法運行正常,可以直觀地觀察到排序的過程。本案例綜合運用變量、列表和克隆的相關技巧模擬了冒泡排序和選擇排序過程,適合具有一定編程基礎的編程愛好者和小朋友學習。通過本案例的制作,可以進一步加深對變量積木、列表積木、克隆體操作積木、過程控制積木等的理解,有利于更熟練掌握它們的使用方法。制作時需要注意,克隆體編號和克隆體大小兩個變量必須設置為“僅適用當前角色”。
聲明:本文章由網友投稿作為教育分享用途,如有侵權原作者可通過郵件及時和我們聯系刪除
