论mid的下标和值的关系
查看原帖
论mid的下标和值的关系
550074
cloudemakers楼主2022/12/10 13:21
#include<bits/stdc++.h>
using namespace std;
int a[6000000];
int n,k;
int qs(int l,int r){
	if (l==r) return a[l];
	int ll=l,rr=r,mid=(l+r)/2;
	while (ll<=rr){
		while (a[ll]<a[mid]) ll++;
		while (a[rr]>a[mid]) rr--;
		if (ll<=rr){
			swap(a[ll],a[rr]);
			ll++,rr--;
		}
	}
	if (k<=rr) qs(l,rr);
	else if (ll<=k)	qs(ll,r);
	else qs(rr+1,ll-1);
}
int main(){
	scanf("%d%d",&n,&k);
	for (int i=0;i<n;i++) scanf("%d",&a[i]);
	printf("%d",qs(0,n-1));
	return 0;
}

rt,这个代码0分 而把mid改成a[(l+r)/2],再把下面的a[mid]直接换成mid后就可以通过 这是怎么回事?

2022/12/10 13:21
加载中...