C++结合Scratch学习排序之冒泡排序

admin 发表于 2019-05-18 09:43

冒泡排序

冒泡排序是一个比较经典和简单的排序算法,利用Scratch编程,我们可以比较清楚的、直观的观看排序的过程,同时也便于理解算法本身。

    什么是冒泡排序呢?把第一个元素与第二个元素比较,如果第一个比第二个大,则交换他们的位置。接着继续比较第二个与第三个元素,如果第二个比第三个大,则交换他们的位置……(你看那水中的鱼,他们时不时地吐出泡泡,那泡泡越往上走就会越大)。我们对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样一趟比较交换下来之后,排在最右的元素就会是最大的数。除去最右的元素,我们对剩余的元素做同样的工作,如此重复下去,直到排序完成。

https://www.china-scratch.com/Uploads/timg/190518/09435Qc9-0.jpg

比如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实现的方式:

第一种:

https://www.china-scratch.com/Uploads/timg/190518/09435T210-1.jpg

https://www.china-scratch.com/Uploads/timg/190518/09435923A-2.jpg

第二种:

https://www.china-scratch.com/Uploads/timg/190518/09435960I-3.jpg

https://www.china-scratch.com/Uploads/timg/190518/0943595340-4.jpg

大家自己去欣赏程序和代码吧,毕竟读懂程序也是编程的一个基本技能,最好还要动手实践一下!

后记,小编朋友公司研发了一个游戏化的少儿编程在线课程(5-12岁),游戏化教学结合scratch(一款在线少儿编程工具,类似乐高的积木拼搭),我家娃娃学了几次课,非常喜欢(超预期),16次课才200多块钱,对锻炼孩子的思维能力和动手动力很有帮助。

感兴趣的朋友可以扫描二维码,关注一下,或微信搜索“大耳猴少儿编程”

https://www.china-scratch.com/Uploads/Editor/2018-04-22/5adca08bdc212.jpg