資訊內容
C++結合Scratch學習排序之冒泡排序
冒泡排序
冒泡排序是一個比較經典和簡單的排序算法,利用Scratch編程,我們可以比較清楚的、直觀的觀看排序的過程,同時也便于理解算法本身。
??? 什么是冒泡排序呢?把第一個元素與第二個元素比較,如果第一個比第二個大,則交換他們的位置。接著繼續比較第二個與第三個元素,如果第二個比第三個大,則交換他們的位置……(你看那水中的魚,他們時不時地吐出泡泡,那泡泡越往上走就會越大)。我們對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對,這樣一趟比較交換下來之后,排在最右的元素就會是最大的數。除去最右的元素,我們對剩余的元素做同樣的工作,如此重復下去,直到排序完成。
比如9,5,6,8,2,7,3,4,1這組數據,要將它按照從小到大的順序排列起來。首先想到將第一個數A與后面的數比較如果后面的數比較大,那么這兩個數的順序是正確的。將當前A更新成后面較大的數,然后再與后面的比較。遇到比自己小的進行交換,但是不更新A。
如例:
1.第一次比較,9是最大的,執行后9,5,6,8,2,7,3,4,1
2.第二次比較,5比9小,執行后5,9,6,8,2,7,3,4,1
3.第三次比較,6比9小,比5大,執行后5,6,9,8,2,7,3,4,1
4.第四次比較,8比9小,比6大,執行后5,6,8,9,2,7,3,4,1
5.第五次比較,2比9小,比568都小,執行后2,5,6,8,9,7,3,4,1
6.第六次比較,7比89小,比6大,執行后2,5,6,7,8,9,3,4,1
7.第七次比較,3比56789小,比2大,執行后2,3,5,6,7,8,9,4,1
8.第八次比較,4比56789小,比3大,執行后2,3,4,5,6,7,8,9,1
9.第九次比較,1最小,執行后1,2,3,4,5,6,7,8,9
C++代碼如下:
#include
using namespace std;
void bubbleSort(int* pData,int length)
{
??? int temp;
??? for(int i =0; i != length; ++i)
??? {
??????? for (intj = 0; j != length; ++j)
??????? {
??????????? if(pData[i] < pData[j])
??????????? {
???????????????temp = pData[i];
???????????????pData[i] = pData[j];
???????????????pData[j] = temp;
??????????? }
??????? }
??? }
}
void print(int* pData,int length)
{
??? for (int i =0; i != length; ++i)
??? {
??????? cout<< pData[i] << " ";
??? }
??? cout <<endl;< p="">
}
int main(){
int pData[] = {9,5,6,8,2,7,3,4,1};
??? ?? bubbleSort(pData,9);
??? ?? cout << "the result is:";
??? ?? print(pData,9);
??? ?? return 0;
}
下面介紹一下用Scratch完成冒泡排序
用Scratch寫這個程序可以用編程的方式把冒泡算法完美的演示一遍。你可以看到每一步程序的執行。排序先從最下面開始,一步一步進行交替比較,發現下面的數字比上面大,就通過臨時變量來進行數據隊列里面的交換。(隊列里面的數據交換位置需要有臨時變量來做數據交換時的臨時存放)。
通過這個程序,小朋友就可以很容易和直觀的理解冒泡算法。
學編程,算法是很重要的一部分,也是真正鍛煉思維的部分,所以NOIP的比賽就是考算法,雖然建議算法可以等到上初中再去學,小學玩玩就好,但是還是可以通過Scratch接觸一些算法的概念會比較好。否則上初中開始直接用C++做算法會很吃力的。
今天我們會介紹兩種scratch實現的方式:
第一種:
第二種:
大家自己去欣賞程序和代碼吧,畢竟讀懂程序也是編程的一個基本技能,最好還要動手實踐一下!
聲明:本文章由網友投稿作為教育分享用途,如有侵權原作者可通過郵件及時和我們聯系刪除
