zoukankan      html  css  js  c++  java
  • 高射炮打蚊子丨在VS 2017里用C语言写经典的冒泡排序

    ​上一期《高射炮打蚊子丨用Visual Studio 2017写最初级的C语言程序》中,我们用Visual Studio “全宇宙最强IDE”这门大炮,打了“C语言写Hello World!”这只小蚊子,那今天我们继续,来看看经典的“冒泡排序”算法,在VS 2017环境下用C语言实现的全过程~!

    题目:

    用起泡法对n个数从小到大排序,n不大于100。

    思路分析:

    “起泡法”即我们经常听到的“冒泡排序”,其基本思路是:将相邻的两个数比较,将小的调到前头,如下图所示:

    若有6个数。第一次将8和9对调,第二次将第2和第3个数(9和5)对调……如此进行5次,得到8-5-4-2-0-9的顺序,可以看到:最大的数字9已“沉底”,成为最下面一个数,而小的数“上升”。最小的数0已向上“浮起”一个位置。经第一趟(共5次比较和交换)后,已得到最大的数。然后进行第二趟比较,对余下的前面5个数按上法进行比较,如下图,经过4次比较于交换,得到次大的数8。

    如此进行下去,可以推知,对6个数要比较5趟,才能对 6个数按大小顺序排列。在第一趟中要进行两个数之间的比较,共5次,在第二趟中比较4次……第5趟比较1次。如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较。

    考察知识点:

    一维数组、循环控制

    代码实现:

    根据思路分析,我们开始设计程序,基本上要分为以下几个片段

    1、定义变量

      需要比较的数字数量n;比较次数m;计数i,j;存储需要比较数字的一维数组a[100]

    2、记录需要比较的数字

      首先询问需要比较多少个数字,然后设计一个循环控制,循环n次,依次记录这些数字

    3、进行比较

      设计一个循环控制,进行n-1趟比较,每趟比较中仍然是一个循环控制,依次比较相邻两个数大小,并替换,存储到数组中

    4、输出

      设计一个循环控制,依次输出数组中完成排序的数字

    #include<stdio.h>
    void main()
    {
        int n,m,i, j,a[100],t;
        printf("How many numbers you need to sort?(1-100)
    ");       //输入需要比较多少个数字
        scanf("%d", &n);
        for (i = 0; i < n; i++)      //输入第n个数字
        {
            printf("Please input the No.%d number, then press Enter: ", i+1);   
            scanf("%d", &a[i]);
        }
        m = n - 1;
        printf("
    ");
        for (j=0;j<m;j++)                //进行n-1次循环,实现n-1趟比较
            for(i=0;i<m-j;i++)           //每一趟比较重进行n-1-j次比较
                if (a[i] > a[i + 1])     //相邻两个数比较
                {
                    t = a[i];
                    a[i] = a[i + 1];
                    a[i + 1] = t;
                }
        printf("The sorted numbers are:
    ");
        for (i = 0; i < n; i++)
            printf("%d ", a[i]);
        printf("
    ");
    }

    在Visual Studio 2017里创建新的项目和文件,参考上一期高射炮打蚊子丨用Visual Studio 2017写最初级的C语言程序,输入代码,截图如下:

    Ctrl+F7编译,Ctrl+F5运行

    OK,以上内容操作,我们就完成了一次冒泡排序程序的编写,大家都学会了么?

  • 相关阅读:
    Bootstrap3 formテキストフィールド横幅の指定の仕方
    HTML豆ちしき
    iMac Termanel命令まとめ
    ちょっとした難しい言葉まとめ①
    即使痛苦,绝不止步
    Bower —— 一个Web的包管理工具
    词汇
    8.3.2018 1 Quick and dirty 快而脏的快餐
    7.26 5 优化浪漫 恋爱中的经济学
    7.26 4 印度旅馆阿鲁沙之家
  • 原文地址:https://www.cnblogs.com/shawnxie/p/7923602.html
Copyright © 2011-2022 走看看