快速排序边界问题求大佬解惑
查看原帖
快速排序边界问题求大佬解惑
1033360
retamian楼主2023/8/1 12:21
#include <iostream>
using namespace std;
void kuaipai(int m[], int l, int r) {
    if (l >= r)
        return;
    int tmp = m[(l + r) / 2];  // 标记点
    int ll = l - 1;
    int rr = r + 1;
    while (true) {
        do
            ll++;
        while (m[ll] < tmp);
        do
            rr--;
        while (m[rr] > tmp);
        if (ll >= rr)
            break;

        int kk = m[ll];
        m[ll] = m[rr];
        m[rr] = kk;
    }
    kuaipai(m, l, rr);
    kuaipai(m, rr + 1, r);
}

int main() {
    int n;
    cin >> n;
    int a[n];
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    kuaipai(a, 0, n - 1);
    for (int i = 0; i < n; i++) {
        cout << a[i] << " ";
    }
    cout << endl;
    
    return 0;
}

上述代码可以AC 求大佬解惑:

    kuaipai(m, l, rr);
    kuaipai(m, rr + 1, r);

这串代码改成下列为什么会全TLE

    kuaipai(m, l, rr - 1);
    kuaipai(m, rr, r);
2023/8/1 12:21
加载中...