社区讨论

没开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 条回复,欢迎继续交流。

正在加载回复...