ホームページ > バックエンド開発 > C++ > C++ でクイックソート アルゴリズムを使用する方法

C++ でクイックソート アルゴリズムを使用する方法

WBOY
リリース: 2023-09-19 11:16:48
オリジナル
1085 人が閲覧しました

C++ でクイックソート アルゴリズムを使用する方法

C でのクイック ソート アルゴリズムの使用方法

クイック ソート アルゴリズムは、一般的に使用される並べ替えアルゴリズムです。その中心的な考え方は、並べ替えられるシーケンスを連続的に分割することです。次に、小さいものと大きいものの 2 つのサブシーケンスが再帰的に並べ替えられ、最後にシーケンス全体が並べ替えられます。この記事では、C でのクイック ソート アルゴリズムの使用方法を紹介し、具体的なコード例を示します。

クイック ソート アルゴリズムの実装のアイデアは次のとおりです。

  1. 参照要素ピボットを選択します。これはシーケンス内の任意の要素にすることができます。通常、最初または最後の要素がベースとして選択されます。
  2. シーケンス内のピボットより小さい要素はピボットの左側に配置し、ピボットより大きい要素は右側に配置します。
  3. 左右のサブシーケンスを再帰的にすばやく並べ替えます。

以下は、C を使用してクイック ソート アルゴリズムを実装するコード例です:

#include <iostream>
using namespace std;

// 交换两个元素的值
void swap(int* a, int* b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

// 快速排序的划分函数
int partition(int arr[], int low, int high) {
    int pivot = arr[high];  // 选择最后一个元素作为基准
    int i = (low - 1);  // i代表小于基准的元素的最右边界
    for (int j = low; j <= high - 1; j++) {
        if (arr[j] < pivot) {
            i++;
            swap(&arr[i], &arr[j]);  // 将小于基准的元素放在左边
        }
    }
    swap(&arr[i + 1], &arr[high]);  // 将基准元素放在合适的位置
    return (i + 1);
}

// 快速排序的递归函数
void quickSort(int arr[], int low, int high) {
    if (low < high) {
        int pi = partition(arr, low, high);  // 划分数组
        quickSort(arr, low, pi - 1);  // 对左子数组进行递归排序
        quickSort(arr, pi + 1, high);  // 对右子数组进行递归排序
    }
}

// 打印数组
void printArray(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;
}

int main() {
    int arr[] = {10, 7, 8, 9, 1, 5};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "原始数组:";
    printArray(arr, n);
    quickSort(arr, 0, n - 1);
    cout << "排序后的数组:";
    printArray(arr, n);
    return 0;
}
ログイン後にコピー

上記のコードを実行すると、次の出力が得られます:

原始数组:10 7 8 9 1 5 
排序后的数组:1 5 7 8 9 10 
ログイン後にコピー

このコードは、クイック ソート アルゴリズムを実装します。最初に最後の要素をベンチマークとして選択し、次にパーティション関数を使用して配列を分割し、ベンチマークより小さい要素を左側に配置し、ベンチマークより大きい要素を右側に配置します。次に、配列全体がソートされるまで、左右の部分配列が再帰的にソートされます。

概要:
クイック ソートは効率的なソート アルゴリズムです。平均時間計算量は O(n log n) です。C を使用してクイック ソート アルゴリズムを実装するのは比較的簡単です。上記のコード例を通じて、クイック ソート アルゴリズムの基本原理と実装方法を理解することができ、実際のアプリケーションで柔軟に使用することもできます。

以上がC++ でクイックソート アルゴリズムを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート