最新消息:

【算法讲解】Scartch经典算法之冒泡算法

Python 少儿编程 2719浏览 0评论

友情提示:视频教程观看时请手动设置清晰度。

软件系统的灵魂是算法,这个是宝爸一直认为的沧桑正道。有一天,宝爸在和朋友交流对于儿童编程课程的设置时,朋友说对于scratch这类图形化编程感觉不像正儿八经的编程,没啥意思。在此,宝爸借花献佛,给大家普及一下儿童编程的意义和算法。

儿童编程,首先培养的是儿童对于编程的兴趣,其次是编程中的逻辑思维与理解创新能力。对于C++这些主流的编程语言,在学习的过程中面对一连串的英文字母是极端枯燥的,不适合儿童学习。子曰:因材施教。scratch等图形化编程语言,作为儿童编程的启蒙和入门,正是解决了这一难点。其次,scratch照样能够编写经典算法,同样,即使是简单的图形化语言,学得不好,照样解决不了实际问题。

那么,对于说图形化编程没难度,没意思的朋友,那是因为碰到的讲师水平有限。今天,宝爸给大家演示一下利用Scratch求解信息技术经典算法–冒泡算法。

【算法讲解】Scartch经典算法之冒泡算法

首先,随机输入5个不重复的数字。

【算法讲解】Scartch经典算法之冒泡算法

其次,利用冒泡算法进行从小到大的自动排序。

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

【算法讲解】Scartch经典算法之冒泡算法

上述的为Scratch的升序冒泡源码,宝爸的百度云–>示例代码中可以下载到源代码。

其他语言示例代码:

c语言程序示例如下

#include <stdio.h>
#define SIZE 8
void bubble_sort(int a[], int n);
void bubble_sort(int a[], int n)
{
    int i, j, temp;
    for (j = 0; j < n - 1; j++)
        for (i = 0; i < n - 1 - j; i++)
        {
            if(a[i] > a[i + 1])
            {
                temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
        }
}
int main()
{
    int number[SIZE] = {95, 45, 15, 78, 84, 51, 24, 12};
    int i;
    bubble_sort(number, SIZE);
    for (i = 0; i < SIZE; i++)
    {
        printf("%dn", number[i]);
    }
    return 0;
}
Python3语言程序示例如下
def bubble_sort(nums):
    for in range(len(nums) - 1):  # 这个循环负责设置冒泡排序进行的次数
        for in range(len(nums) - - 1):  # j为列表下标
            if nums[j] > nums[j + 1]:
                nums[j], nums[j + 1= nums[j + 1], nums[j]
    return nums
print(bubble_sort([453283312221997]))
# 输出:[8, 12, 19, 22, 32, 33, 45, 97]
C++语言程序示例如下
#include <iostream>
using namespace std;
template<typename T>
//整数或浮点数皆可使用
void bubble_sort(T arr[], int len)
{
    int i, j;  T temp;
    for (i = 0; i < len - 1; i++)
        for (j = 0; j < len - 1 - i; j++)
        if (arr[j] > arr[j + 1])
        {
            temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
        }
}
int main()
{
    int arr[] = { 61, 17, 29, 22, 34, 60, 72, 21, 50, 1, 62 };
    int len = (int) sizeof(arr) / sizeof(*arr);
    bubble_sort(arr, len);
    for (int i = 0; i < len; i++)
        cout << arr[i] << ' ';
    cout << endl;
    float arrf[] = { 17.5, 19.1, 0.6, 1.9, 10.5, 12.4, 3.8, 19.7, 1.5, 25.4, 28.6, 4.4, 23.8, 5.4 };
    len = (int) sizeof(arrf) / sizeof(*arrf);
    bubble_sort(arrf, len);
    for (int i = 0; i < len; i++)
        cout << arrf[i] << ' ';
    return 0;
}

您必须 登录 才能发表评论!