前四个点AC,基准数是随机选的,但是第五个点TLE,我看了其他人快排AC的代码,感觉没有什么不同的地方,但是请问为什么不过呢? 代码如下:
#include <iostream>
#include <vector>
#include <ctime>
using namespace std;
int partition(vector<int> &vec, int left, int right) {
int num = rand() % (right - left + 1) + left;
swap(vec[num], vec[left]);
int part = vec[left];
int i = left, j = right;
while(i < j) {
while(vec[j] >= part && i < j)
j--;
while(vec[i] <= part && i < j)
i++;
if(i < j) swap(vec[i], vec[j]);
}
swap(vec[left], vec[i]);
return i;
}
void QuickSort(vector<int> &vec, int left, int right) {
if(left >= right) return;
int mid = partition(vec, left, right);
QuickSort(vec, left, mid - 1);
QuickSort(vec, mid + 1, right);
}
int main() {
srand(time(nullptr));
long long n;
cin >> n;
vector<int> vec(n);
for(int i = 0; i < n; i++) {
cin >> vec[i];
}
QuickSort(vec, 0, n - 1);
for(auto &it : vec) {
cout << it << " ";
}
return 0;
}
求助,谢谢大佬了。