考研 408 × 求职面试
知识点 · 算法设计与分析 · 进阶
每日一题 · 算法设计与分析
解析
面试小贴士 · 算法设计与分析
代码实现 · C++
#include <bits/stdc++.h>
using namespace std;
int partition(vector<int>& a, int l, int r) {
int p = l + rand() % (r - l + 1); // 随机选主元
swap(a[p], a[l]);
int pivot = a[l], i = l;
for (int j = l + 1; j <= r; ++j)
if (a[j] < pivot) swap(a[++i], a[j]);
swap(a[l], a[i]);
return i;
}
void quickSort(vector<int>& a, int l, int r) {
if (l >= r) return;
int m = partition(a, l, r);
quickSort(a, l, m - 1);
quickSort(a, m + 1, r);
}
int main() {
srand(time(0));
vector<int> a = {5, 3, 8, 1, 9, 2, 7};
int n = (int)a.size();
quickSort(a, 0, n - 1);
for (int x : a) cout << x << " ";
}