C 言語の古典的なアルゴリズムの例 3: 配列要素の並べ替え
1. 問題の説明
配列のソートを見つける
問題の説明は次の
とおりです
- rand() ライブラリ関数を使用して、1 から 100 までの 10 個の数値をランダムに生成します。
- 宣言された配列のサイズは 10 です。
- ランダムに生成された 10 個の数字が配列に割り当てられます。
- 配列内の要素を最小から最大の順に並べ替えます。
2. アルゴリズムインスタンスのコンパイル環境
この記事の C 言語のクラシック アルゴリズムの例のコンパイル環境では、統合開発環境: Visual Studio 2019 を使用します。
Visual Studio 2019 公式サイトのリンクは以下の通り
Visual Studio 2019 公式 Web サイトのリンク
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.3. ランダムに 10 個の数字を生成し、配列に割り当てる
10 個の数字をランダムに生成して配列に割り当てるコードは次のとおりです。
/// <summary>
/// 随机生成十个数字赋值给数组
/// </summary>
/// <returns></returns>
srand(time(NULL));
for (i = 0; i < 10; i++)
{
myArr[i] = rand() % 100 + 1;
}
- srand(time(NULL)) は、毎回異なる数値を生成することが保証されています。
- ループを通じて、ランダムに生成された 10 個の数値を配列に割り当てます。
3.4. ランダムに生成された 10 個の数字を出力する
ランダムに生成された 10 個の数値コードの出力を以下に示します。
/// <summary>
/// 输出随机生成的十个数字
/// </summary>
/// <returns></returns>
printf("The ten randomly generated numbers are as follows\n");
for (i = 0; i < 10; i++)
{
printf("%d ", myArr[i]);
}
printf("\n");
- 配列に入れたデータを出力します。
F5 を押してコンパイルすると、デバッグ結果は次のようになります。
- ランダムに生成された数値と配列に格納されたデータを正しく出力できます。
3.5. 配列を小さいものから大きいものへ並べ替える
配列を小さいものから大きいものに並べ替えるコードは次のとおりです。
/// <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;
}
}
}
- 配列は最小から最大の順に並べ替えられます
- ソート方法はバブルソートです
3.6. ソートされた配列要素の数を出力する
出力配列要素のソートされた数値コードを以下に示します
/// <summary>
/// 输出数组元素排序好的数字
/// </summary>
/// <returns></returns>
printf("\nThe ten randomly generated numbers are sorted from smallest to largest as follows\n");
for (i = 0; i < 10; i++)
{
printf("%d ", myArr[i]);
}
printf("\n\n");
- ソートされた数値を出力できます。
- 数値は数値で格納されます。
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 番目に、古典的なアルゴリズムのサンプル プログラムの完全なコード
古典的なアルゴリズムのサンプル プログラムの完全なコードは次のとおりです。
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 follows\n");
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 follows\n");
for (i = 0; i < 10; i++)
{
printf("%d ", myArr[i]);
}
printf("\n\n");
system("pause");
return 0;
}
V. まとめ
C 言語の古典的なアルゴリズムの例: 配列要素の並べ替え、達成される目標は次のとおりであり、主なポイントは次のとおりです。
- rand() ライブラリ関数を使用して、1 から 100 までの 10 個の数値をランダムに生成します。
- 宣言された配列のサイズは 10 です。
- ランダムに生成された 10 個の数字が配列に割り当てられます。
- 配列内の要素を最小から最大の順に並べ替えます。
- ソート方法はバブルソートです。
記事はここまでです。
この記事が、C 言語の古典的なアルゴリズムである配列要素の並べ替えの例になることを願っています。
C 言語とアルゴリズム学習への愛を刺激することができます。