提交记录 18072
| 提交时间 |
评测时间 |
| 2022-10-07 15:23:05 |
2022-10-07 15:23:06 |
#include <algorithm>
void quick_sort(int *A,int x,int y) // 从x到y排序(左闭右开)
{
if(y-x>1){
int l=x+1,r=y-1;
while(l<=r){ // 可以取等(考虑只有两个数的排序)
// 双指针向中间扫描,扫描到不符合的数时停止,双指针均扫描到,直接互换
while(!(A[l]>A[x]||l>r)){
l++;
}while(!(A[r]<A[x]||l>r)){
r--;
}if(l<r){
// 交换A[l]和A[r]的值
A[l]=A[r]+A[l];
A[r]=A[l]-A[r];
A[l]=A[l]-A[r];
}
}
int m = l-1;
// 将第一个数与中间的数互换 (此时l=r,数值一定大于x的)
A[x] = A[x] + A[m];
A[m] = A[x] - A[m];
A[x] = A[x] - A[m];
quick_sort(A, x, m);
quick_sort(A, m + 1, y);
}
}
void sort(unsigned *a, int n) {
quick_sort(a,0,n);
}
| Compilation | N/A | N/A | Compile Error | Score: N/A | 显示更多 |
Judge Duck Online | 评测鸭在线
Server Time: 2026-03-16 13:51:24 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠