这快排怎么写??
  • 板块学术版
  • 楼主FlowerAccepted
  • 当前回复13
  • 已保存回复13
  • 发布时间2024/8/28 09:11
  • 上次更新2024/8/28 11:17:32
查看原帖
这快排怎么写??
1023732
FlowerAccepted楼主2024/8/28 09:11
#include <algorithm>
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;

int a[10], len; // 0x100000A

void quick_sort(int l = 0, int r = len) {
    if (l == r) {
        return;
    }
    int key = a[l + abs(rand()) % (r - l + 1)], i = l, j = r - 1;
    while (i + 1 < j) {
        if (a[i] <= key) {
            i ++;
        }
        if (a[j] > key) {
            j --;
        }
        if (a[j] <= key) {
            swap(a[i], a[j]);
            i ++;
        }
        if (a[i] > key) {
            swap(a[i], a[j]);
            j --;
        }
    }
    quick_sort(l, i);
    quick_sort(j, r);
}

int main() {
    cin >> len;
    for (int i = 0; i < len; i ++) {
        cin >> a[i];
    }
    quick_sort();
    for (int i = 0; i < len; i ++) {
        cout << a[i] << ' ';
    }
    return 0;
}

这代码死循环还RE,怎么改?

2024/8/28 09:11
加载中...