提交记录 125798
| 提交时间 |
评测时间 |
| 2026-10-10 18:00:59 |
2026-10-10 18:01:00 |
#include <algorithm>
void quickSort(unsigned *a, int left, int right) {
if (left >= right) {
return; // 递归终止条件
}
// 取最左边的元素作为基准(pivot)
unsigned pivot = a[left];
int i = left;
int j = right;
while (i < j) {
// 从右向左扫描,找第一个小于 pivot 的数
while (i < j && a[j] >= pivot) {
j--;
}
// 找到后,把它填到左边的“坑”里
if (i < j) {
a[i] = a[j];
i++;
}
// 从左向右扫描,找第一个大于 pivot 的数
while (i < j && a[i] <= pivot) {
i++;
}
// 找到后,把它填到右边的“坑”里
if (i < j) {
a[j] = a[i];
j--;
}
}
// 把基准值填入最后的“坑”中,此时 i == j
a[i] = pivot;
// 递归对左右两个子区间进行排序
quickSort(a, left, i - 1);
quickSort(a, i + 1, right);
}
void sort(unsigned *a, int n) {
if (n <= 1) return;
quickSort(a, 0, n - 1);
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 508.07 us | 48 KB | Accepted | Score: 100 | 显示更多 |
Judge Duck Online | 评测鸭在线
Server Time: 2026-10-13 13:45:15 | Loaded in 0 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠