首頁 > 軟體

C語言演演算法練習之陣列元素排序

2022-09-05 14:00:19

一、問題描述

求陣列的排序

問題的描述

如下幾點所示

  • 使用rand()庫函數隨機生成10個1-100之間的數位。
  • 宣告陣列的大小為10。
  • 隨機生成的10個數位賦值給陣列。
  • 給陣列內的元素由小到大排序。

二、演演算法範例編譯環境

本文C語言經典演演算法範例的編譯環境,使用的是整合式開發環境:Visual Studio 2019

Visual Studio 2019官網連結如下

Visual Studio 2019官網連結

Visual Studio 2019整合的開發環境的特點有

  • Visual Studio 2019預設安裝Live Share程式碼共同作業服務。
  • 幫助使用者快速編寫程式碼的新歡迎視窗、改進搜尋功能、總體效能改進。
  • Visual Studio IntelliCode AI幫助。
  • 更好的Python虛擬和Conda支援。
  • 以及對包括WinForms和WPF在內的.NET Core 3.0專案支援等。

三、演演算法範例實現過程

3.1、包含標頭檔案

包含標頭檔案 程式碼如下所示

#pragma once


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX 10		// 定義宏

將要用到的C語言標頭檔案包含近年來。

3.2、定義宏和宣告陣列

定義宏和宣告陣列 程式碼如下所示

    #define MAX 10        // 定義宏
    int myArr[MAX];     // 定義陣列變數

定義了MAX ,代表了MAX 為常數10。

宣告了陣列myArr。

3.3、宣告相關變數

宣告相關變數 程式碼如下所示

    int i, j, tempVal;  // 定義變數

宣告相關變數i, j, tempVal。

3.4、隨機生成十個數位賦值給陣列

隨機生成十個數位賦值給陣列 程式碼如下所示

     /// <summary>
    /// 隨機生成十個數位賦值給陣列
    /// </summary>
    /// <returns></returns>
    srand(time(NULL));
    for (i = 0; i < 10; i++)
    {
        myArr[i] = rand() % 100 + 1;
    }

srand(time(NULL))可以保證每一次生成的數位都不同。

通過迴圈,將隨機生成十個數位賦值給陣列。

3.5、輸出隨機生成的十個數位

輸出隨機生成的十個數位 程式碼如下所示

      /// <summary>
    /// 輸出隨機生成的十個數位
    /// </summary>
    /// <returns></returns>
    printf("The ten randomly generated numbers are as followsn");
    for (i = 0; i < 10; i++)
    {
        printf("%d ", myArr[i]);
    }
    printf("n");

輸出 我們向陣列中輸入的資料。

按F5進行編譯,偵錯結果如下所示。

可以正確的輸出隨機生成的數位,儲存於陣列中的資料。

3.6、陣列從小到大進行排序

陣列從小到大進行排序 程式碼如下所示

 /// <summary>
    /// 輸出陣列元素排序好的數位
    /// </summary>
    /// <returns></returns>
    printf("nThe ten randomly generated numbers are sorted from smallest to largest as followsn");
    for (i = 0; i < 10; i++)
    {
        printf("%d ", myArr[i]);
    }
    printf("nn");

陣列的排序方式為從小到大

採用的排序方式為氣泡排序

3.7、輸出陣列元素排序好的數位

輸出陣列元素排序好的數位 程式碼如下所示

 /// <summary>
    /// 輸出陣列元素排序好的數位
    /// </summary>
    /// <returns></returns>
    printf("nThe ten randomly generated numbers are sorted from smallest to largest as followsn");
    for (i = 0; i < 10; i++)
    {
        printf("%d ", myArr[i]);
    }
    printf("nn");

可以輸出排序好的數位。

數位儲存於數位之中。

按F5進行編譯,偵錯結果如下所示。

The ten randomly generated numbers are as follows
78 95 27 65 62 83 19 74 8 90

The ten randomly generated numbers are sorted from smallest to largest as follows
8 19 27 62 65 74 78 83 90 95
請按任意鍵繼續. . .

可以看做數位是從小到大排序輸出的。

排序演演算法符合要求。

四、經典演演算法範例程式 完整程式碼

經典演演算法範例程式完整程式碼如下所示

4.1、main.h檔案

#pragma once

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX 10		// 定義宏

4.2、main.c檔案

#define _CRT_SECURE_NO_WARNINGS

#include "Main.h"

int main()
{
    system("color 3E");

    int myArr[MAX];     // 定義陣列變數

    int i, j, tempVal;  // 定義變數

    /// <summary>
    /// 隨機生成十個數位賦值給陣列
    /// </summary>
    /// <returns></returns>
    srand(time(NULL));
    for (i = 0; i < 10; i++)
    {
        myArr[i] = rand() % 100 + 1;
    }

    /// <summary>
    /// 輸出隨機生成的十個數位
    /// </summary>
    /// <returns></returns>
    printf("The ten randomly generated numbers are as followsn");
    for (i = 0; i < 10; i++)
    {
        printf("%d ", myArr[i]);
    }
    printf("n");

    /// <summary>
    ///  陣列從小到大進行排序
    /// </summary>
    /// <returns></returns>
    for (j = 0; j < 10; j++)
    {
        for (i = 0; i < 9 - j; i++)
        {
            if (myArr[i] > myArr[i + 1])
            {
                tempVal = myArr[i];

                myArr[i] = myArr[i + 1];

                myArr[i + 1] = tempVal;
            }
        }
    }

    /// <summary>
    /// 輸出陣列元素排序好的數位
    /// </summary>
    /// <returns></returns>
    printf("nThe ten randomly generated numbers are sorted from smallest to largest as followsn");
    for (i = 0; i < 10; i++)
    {
        printf("%d ", myArr[i]);
    }
    printf("nn");


    system("pause");
    return 0;
}

五、總結

C語言經典演演算法範例:陣列元素排序,要實現的目標如下和要點如下

使用rand()庫函數隨機生成10個1-100之間的數位。

宣告陣列的大小為10。

隨機生成的10個數位賦值給陣列。

給陣列內的元素由小到大排序。

排序方式為氣泡排序方式。

到此這篇關於C語言演演算法練習之陣列元素排序的文章就介紹到這了,更多相關C語言陣列元素排序內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com