c++快速排序函數(shù)怎么使用

c++
小億
106
2024-01-31 10:18:00
欄目: 編程語言

C++中的快速排序函數(shù)可以通過以下步驟來使用:

  1. 包含 <iostream> 頭文件用于輸入輸出操作。
  2. 定義一個(gè)快速排序函數(shù),參數(shù)為要排序的數(shù)組,起始索引和結(jié)束索引。
  3. 在快速排序函數(shù)內(nèi)部,選擇一個(gè)基準(zhǔn)元素(一般選擇數(shù)組的第一個(gè)元素)。
  4. 設(shè)置兩個(gè)指針,一個(gè)指向起始索引,一個(gè)指向結(jié)束索引。
  5. 將比基準(zhǔn)元素小的元素放在基準(zhǔn)元素的左邊,比基準(zhǔn)元素大的元素放在右邊。
  6. 遞歸調(diào)用快速排序函數(shù),對(duì)基準(zhǔn)元素左邊的子數(shù)組和右邊的子數(shù)組進(jìn)行排序。
  7. 在快速排序函數(shù)外部,調(diào)用快速排序函數(shù)來對(duì)數(shù)組進(jìn)行排序。

下面是一個(gè)使用快速排序函數(shù)的示例代碼:

#include <iostream>

// 快速排序函數(shù)
void quickSort(int arr[], int start, int end) {
    if (start < end) {
        int pivot = arr[start]; // 基準(zhǔn)元素
        int i = start; // 左指針
        int j = end; // 右指針

        while (i < j) {
            // 從右往左找到比基準(zhǔn)元素小的元素
            while (i < j && arr[j] >= pivot) {
                j--;
            }
            if (i < j) {
                arr[i] = arr[j];
                i++;
            }

            // 從左往右找到比基準(zhǔn)元素大的元素
            while (i < j && arr[i] <= pivot) {
                i++;
            }
            if (i < j) {
                arr[j] = arr[i];
                j--;
            }
        }

        arr[i] = pivot; // 將基準(zhǔn)元素放到正確的位置

        // 遞歸調(diào)用快速排序函數(shù)
        quickSort(arr, start, i - 1); // 對(duì)左邊的子數(shù)組進(jìn)行排序
        quickSort(arr, i + 1, end); // 對(duì)右邊的子數(shù)組進(jìn)行排序
    }
}

int main() {
    int arr[] = {5, 2, 8, 3, 1, 6};
    int n = sizeof(arr) / sizeof(arr[0]);

    std::cout << "原始數(shù)組:";
    for (int i = 0; i < n; ++i) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;

    quickSort(arr, 0, n - 1); // 調(diào)用快速排序函數(shù)

    std::cout << "排序后的數(shù)組:";
    for (int i = 0; i < n; ++i) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

輸出結(jié)果:

原始數(shù)組:5 2 8 3 1 6 
排序后的數(shù)組:1 2 3 5 6 8

在上面的示例中,我們定義了一個(gè) quickSort 函數(shù)來對(duì)數(shù)組進(jìn)行快速排序。然后在 main 函數(shù)中調(diào)用該函數(shù),并輸出排序后的數(shù)組。

0