C++ 快速排序算法实现:从小到大排序 N 个整数

快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++选手请不要试图使用STL,虽然你可以使用sort一遍过,但是你并没有掌握快速排序算法的精髓。)

输入描述

第1行为一个正整数N,第2行包含N个空格隔开的正整数ai​,为你需要进行排序的数,数据保证了Ai​不超过10^9。

输出描述

将给定的N个数从小到大输出,数之间空格隔开,行末换行且无空格

C++ 代码实现

#include <iostream>
using namespace std;

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) {
            swap(arr[i], arr[j]);
            i++;
            j--;
        }
    }
  
    if (left < j) quickSort(arr, left, j);
    if (i < right) quickSort(arr, i, right);
}

int main() {
    int N;
    cin >> N;
    
    int arr[N];
    for (int i = 0; i < N; i++) {
        cin >> arr[i];
    }
    
    quickSort(arr, 0, N - 1);
  
    for (int i = 0; i < N; i++) {
        cout << arr[i];
        if (i != N - 1) {
            cout << ' '; // 将双引号改为单引号
        }
    }
    cout << endl;
    
    return 0;
}

希望对你有帮助!

C++ 快速排序算法实现:从小到大排序 N 个整数

原文地址: https://www.cveoy.top/t/topic/qtFZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录