中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
桑日县| 宁安市| 辽阳县| 古丈县| 贺州市| 磐石市| 景洪市| 富阳市| 武威市| 来安县| 财经| 云霄县| 潞西市| 石景山区| 洛南县| 正镶白旗| 盐边县| 德钦县| 丰镇市| 鹤壁市| 南康市| 南丰县| 日照市| 讷河市| 沧州市| 额敏县| 永平县| 新干县| 宝坻区| 宜州市| 南涧| 武宁县| 三江| 明溪县| 古浪县| 遂昌县| 河源市| 河间市| 潍坊市| 越西县| 井研县|