C言語によるソートアルゴリズムとその実装方法

C言語によるソートアルゴリズムとその実装方法

並べ替えアルゴリズムはコンピューター サイエンスの重要な部分であり、データ処理とアルゴリズム設計において重要な役割を果たします。C 言語プログラミング開発では、コードの品質とパフォーマンスを向上させるために、さまざまなソート アルゴリズムとその実装方法を習得することが重要です。この記事では、C 言語のソート アルゴリズムの説明に焦点を当て、いくつかの一般的なソート アルゴリズムとその実装方法を紹介します。

1ソートアルゴリズムとそのC言語による実装方法

まず、挿入ソートアルゴリズムについて説明します。挿入ソート アルゴリズムの中心的な考え方は、ソート対象の要素をソートされた部分に 1 つずつ挿入することです。具体的な実装方法は以下の通りです。

void挿入Sort(int arr[], int n) {

int i、キー、j;

for (i = 1; i < n; i++) {

キー = arr[i];

j = i - 1;

while (j >= 0 && arr[j] > key) {

arr[j + 1] = arr[j];

j = j - 1;

}

arr[j + 1] = キー;

}

}

次に、選択ソートアルゴリズムを見てみましょう。選択ソートアルゴリズムは、毎回ソート対象の要素の中から最小の要素を選択し、ソート部分の最後に配置するというシンプルで直感的なソートアルゴリズムです。具体的な実装方法は以下の通りです。

voidselectionSort(int arr[], int n) {

int i、j、min_idx;

for (i = 0; i < n-1; i++) {

min_idx = i;

for (j = i + 1; j < n; j++) {

if (arr[j] < arr[min_idx])

min_idx = j;

}

int temp = arr[min_idx];

arr[min_idx] = arr[i];

arr[i] = 温度;

}

}

次に、一般的に使用される効率的なソート アルゴリズムであるクイック ソートを紹介します。クイックソート アルゴリズムは、配列を 2 つのサブ配列 (小さい配列と大きい配列) に分割し、サブ配列を再帰的にソートすることによって配列をソートします。具体的な実装方法は以下の通りです。

int パーティション(int arr[], int low, int high) {

int ピボット = arr[高];

int i = (低 - 1);

for (int j = low; j <= 1=”” high-=””>

if (arr[j] < ピボット) {

i++;

int temp = arr[i];

arr[i] = arr[j];

arr[j] = 温度;

}

}

int temp = arr[i + 1];

arr[i + 1] = arr[高];

arr[高] = 温度;

(i + 1) を返します。

}

void QuickSort(int arr[], int low, int high) {

if (低 < 高) {

int pi = パーティション(arr, low, high);

クイックソート(arr, low, pi - 1);

クイックソート(arr, pi + 1, high);

}

}

最後に、安定したソート アルゴリズムであるマージ ソートを導入します。マージ ソート アルゴリズムは、配列を 2 つのサブ配列に分割し、そのサブ配列を再帰的にソートし、最後にソートされた 2 つのサブ配列を順序付けされた配列にマージすることによって機能します。具体的な実装方法は以下の通りです。

void merge(int arr[], int l, int m, int r) {

int i、j、k;

int n1 = m - l + 1;

int n2 = r - m;

int L[n1], R[n2];

for (i = 0; i < n1; i++)

L[i] = arr[l + i];

for (j = 0; j < n2; j++)

R[j] = arr[m + 1+ j];

i = 0;

j = 0;

k = l;

while (i < n1 && j < n2) {

if (L[i] <= r=””>

arr[k] = L[i];

i++;

}

それ以外 {

arr[k] = R[j];

j++;

}

k++;

}

while (i < n1) {

arr[k] = L[i];

i++;

k++;

}

while (j < n2) {

arr[k] = R[j];

j++;

k++;

}

}

void mergeSort(int arr[], int l, int r) {

if (l < r) {

int m = l+(rl)/2;

mergeSort(arr, l, m);

mergeSort(arr, m+1, r);

マージ(arr, l, m, r);

}

}

上記のソート アルゴリズムの紹介により、ソート アルゴリズムとその C 言語での実装方法について予備的に理解しました。挿入ソート、選択ソート、クイック ソート、およびマージ ソートはすべて一般的に使用される並べ替えアルゴリズムであり、それぞれに異なる特性と適用可能なシナリオがあります。実際のアプリケーションでは、特定の状況に応じて最適な並べ替えアルゴリズムを選択する必要があります。同時に、最適化アルゴリズムの実装または並列コンピューティングを通じて、並べ替えアルゴリズムのパフォーマンスをさらに向上させることができます。

この記事での紹介が、C 言語でのソート アルゴリズムとその実装方法をよりよくマスターし、プログラミング能力とコードの品質とパフォーマンスを向上させるのに役立つことを願っています。実際の開発では、プログラムの実行効率に直接影響するソートアルゴリズムを合理的に選択することが非常に重要です。アルゴリズムの徹底的な研究と実践を通じて、アルゴリズムの設計とプログラミング能力を継続的に向上させ、効率的で安定したプログラムを開発するための強固な基盤を築くことができます。
コードの一部は https://www.wodianping.com/c/2023-08/253559.html から転送されています。

おすすめ

転載: blog.csdn.net/qq_42151074/article/details/132262470