社区讨论
没开O2后两个点TLE,开了O2后就过了qwq,想问问这个代码有啥问题
P1923【深基9.例4】求第 k 小的数参与者 6已保存回复 10
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 10 条
- 当前快照
- 1 份
- 快照标识符
- @lo1mjgl0
- 此快照首次捕获于
- 2023/10/22 23:29 2 年前
- 此快照最后确认于
- 2023/11/03 00:13 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
int a[5000010];
void quick_sort(int q[], int l, int r)
{
if (l >= r) return; // 已经排好序了,直接返回
int i = l - 1, j = r + 1;
int mid = q[l + r >> 1]; // mid 为分界点
while (i < j)
{
do i ++ ; while (q[i] < mid);
do j -- ; while (q[j] > mid);
if (i < j) swap(q[i], q[j]);
}
quick_sort(q, l, j), quick_sort(q, j + 1, r); // 递归左右两边
return;
}
int main(void)
{
int n , k;
scanf("%d%d" , &n , &k);
for (int i = 1 ; i <= n ; i++)
{
scanf("%d" , &a[i]);
}
quick_sort(a , 1 , n);
printf("%d" , a[k + 1]);
}
回复
共 10 条回复,欢迎继续交流。
正在加载回复...