只能过前两个(按照算法导论上的伪代码写的),救命啊
查看原帖
只能过前两个(按照算法导论上的伪代码写的),救命啊
388162
int_fanle楼主2020/9/20 19:33
#include<iostream>
#include<vector>
using namespace std;

int findPosition(vector<int>& arr, int left, int right){
    int r = right;
    int start = left - 1;

    for(int i = left; i < right; ++i){
        if(arr[i] < arr[r]){
            swap(arr[i], arr[++start]);
        }
    }
    swap(arr[++start], arr[r]);

    return start;
}
void quickSort(vector<int>& arr, int left, int right){
    if(left >= right) return;

    int indx = findPosition(arr, left, right);
    quickSort(arr, left, indx - 1);
    quickSort(arr, indx + 1, right);
}
int main()
{   
    int n;
    cin >> n;
    vector<int> arr(n, 0);
    while(--n >= 0){
        cin >> arr[n];
    }
    n = arr.size();

    quickSort(arr, 0, n - 1);

    for(int i = 0; i < n; ++i){
        cout << arr[i] << ' ';
    }

    return 0;
}
2020/9/20 19:33
加载中...