亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

C++如何給數組排序

c++
小億
95
2024-01-25 01:50:55
欄目: 編程語言

C++提供了多種排序算法來對數組進行排序,其中最常用的是快速排序、歸并排序和插入排序。以下是使用這些排序算法對數組進行排序的示例代碼:

  1. 快速排序:
#include <iostream>
using namespace std;

// 分區函數
int partition(int arr[], int low, int high) {
    int pivot = arr[high];
    int i = (low - 1);

    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);
    }
}

// 測試代碼
int main() {
    int arr[] = {64, 25, 12, 22, 11};
    int n = sizeof(arr) / sizeof(arr[0]);
    
    quickSort(arr, 0, n - 1);

    cout << "排序后的數組:";
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";

    return 0;
}
  1. 歸并排序:
#include <iostream>
using namespace std;

// 合并兩個子數組
void merge(int arr[], int l, int m, int r) {
    int n1 = m - l + 1;
    int n2 = r - m;

    int L[n1], R[n2];  // 臨時數組

    // 將數據復制到臨時數組
    for (int i = 0; i < n1; i++)
        L[i] = arr[l + i];
    for (int j = 0; j < n2; j++)
        R[j] = arr[m + 1 + j];

    // 合并臨時數組
    int i = 0;
    int j = 0;
    int k = l;
    while (i < n1 && j < n2) {
        if (L[i] <= R[j]) {
            arr[k] = L[i];
            i++;
        } else {
            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 + (r - l) / 2;
        mergeSort(arr, l, m);
        mergeSort(arr, m + 1, r);

        merge(arr, l, m, r);
    }
}

// 測試代碼
int main() {
    int arr[] = {64, 25, 12, 22, 11};
    int n = sizeof(arr) / sizeof(arr[0]);

    mergeSort(arr, 0, n - 1);

    cout << "排序后的數組:";
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";

    return 0;
}
  1. 插入排序:
#include <iostream>
using namespace std;

// 插入排序函數
void insertionSort(int arr[], int n) {
    int i, key, j;
    for (i = 1; i < n; i++) {
        key = arr[i];
        j = i - 1;

        // 將比 key 大的元素向后移動
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key;
    }
}

// 測試代碼
int main() {
    int arr[] = {64, 25, 12, 22, 11};
    int n = sizeof(arr) / sizeof(arr[0]);

    insertionSort(arr, n);

    cout << "排序后的數組:";
    for (int i = 0; i < n; i++)
        cout << arr

0
独山县| 塘沽区| 德昌县| 丹阳市| 郁南县| 灌阳县| 文登市| 馆陶县| 库尔勒市| 维西| 枞阳县| 利津县| 叙永县| 调兵山市| 东平县| 盱眙县| 兴山县| 华池县| 吉安县| 黔西| 康保县| 英超| 马鞍山市| 平罗县| 九龙坡区| 随州市| 德安县| 凉城县| 手机| 屏山县| 六枝特区| 贵阳市| 平舆县| 文登市| 金秀| 黄石市| 出国| 沙坪坝区| 平湖市| 古蔺县| 贞丰县|