刚开始的朴素想法,也就是老师上课说的部分快排。
但做了以后发现并没那么简单,首先是qsort中,以前写的都有等号,但不确定到底是哪个位置
于是改为无等号。
笨办法,部分需排的由a放入b
#include <stdio.h>
int a[200010];
int b[100000];
int knumber;
void qqsort(int low,int high)
{
int l=low,h=high;
b[0]=b[l];
while(l<h)
{
while( l<h && b[h]>=b[0] )h--;
b[l]=b[h];
while( l<h && b[l]<=b[0] )l++;
b[h]=b[l];
}
b[l]=b[0];
if(l==knumber)
return ;
else if(l>knumber)
qqsort(low ,h-1);
else
qqsort(l+1,high);
}
int main()
{
int i,j,n,m,num;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
while(m--)
{
scanf("%d%d%d",&i,&j,&knumber);
for(num=1;num+i-1<=j;num+&