就是听别人说下面这个查询区间第 k 小代码是 O(N) 的。但是我用了一次之后开始怀疑了,所以请大佬看一下这个东西的时间复杂度是什么。
inline void qsort(int l,int r,int k)
{
int i=l,j=r,mid=t[(l+r)>>1];
do
{
while(t[j]>mid)
j--;
while(t[i]<mid)
i++;
if(i<=j)
{
swap(t[i],t[j]);
i++;
j--;
}
}
while(i<=j);
if(k<=j) qsort(l,j,k);
else if(i<=k) qsort(i,r,k);
else
{
ans+=t[j+1];
return ;
}
}