C言語 クイックソート 実装方法【サンプルコード付き】
クイックソートは一般的なソートアルゴリズムであり、基本的な考え方は、一度のソートで未処理のデータを独立した2つの部分に分割し、一方のすべてのデータが他方のすべてのデータよりも小さいことです。そして、これら2つの部分のデータをそれぞれソートし、全体のシーケンスが整列されるように再帰的に繰り返します。
以下は、クイックソートアルゴリズムを実装したC言語のサンプルコードです。
#include <stdio.h>
void quickSort(int arr[], int left, int right) {
int i = left, j = right;
int pivot = arr[(left + right) / 2];
while (i <= j) {
while (arr[i] < pivot) {
i++;
}
while (arr[j] > pivot) {
j--;
}
if (i <= j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
if (left < j) {
quickSort(arr, left, j);
}
if (i < right) {
quickSort(arr, i, right);
}
}
int main() {
int arr[] = {12, 34, 23, 45, 56, 67, 78, 89, 90, 11};
int n = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, n - 1);
printf("Sorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
上記のコードでは、quickSort関数がクイックソートのアルゴリズムを実装しており、leftは配列の開始インデックスを、rightは配列の終了インデックスを表しています。メイン関数では、配列arrを定義し、この配列をquickSort関数でソートして、最終的に結果を表示しています。
注意:上記のサンプルコードは一つの実装方法に過ぎず、実際のアプリケーションでは具体的な状況に応じて最適化や改善が必要かもしれません。