初级守护
#include<iostream>
using namespace std;
void qsort(int a[],int l,int r)
{
int mid,i,j;
mid=a[(l+r)/2];
i=l; j=r;
while (i<=j)
{
while (a[i]<mid) i++;
while (mid<a[j]) j--;
if (i<=j)
{
swap(a[i],a[j]);
i++;
j--;
}
}
if (l<j) qsort(a,l,j);
if (i<r) qsort(a,i,r);
}
int a[50100],b[50010],n;
int main()
{
cin>>n;
for (int i=1;i<=n;i++)
{
cin>>a[i];
b[i]=a[i];
}
qsort(a,1,n);
for (int i=1;i<=n;i++)
{
for (int j=1;j<=n;j++)
{
if (b[j]==a[i])
{
cout<<j<<endl;
}
}
}
return 0;
}
高级光能
最好不要写两个数组,可以写一个结构体排序。
但是这道题调用系统快排是错的,所以要手写快排。
你的程序有很多错误,光是最后的两重循环(不说对不对)就够你超时了(n<=50000)
而且你排序之后,数组好像也没有传递回来。
建议你重写吧。