问题标题: 酷町堂:1286 超市排排看(market)

2
0
已解决
高翊天
高翊天
初级守护
初级守护

#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;
}


0
已采纳
贾文卓
贾文卓
高级光能
高级光能

最好不要写两个数组,可以写一个结构体排序。

但是这道题调用系统快排是错的,所以要手写快排。

你的程序有很多错误,光是最后的两重循环(不说对不对)就够你超时了(n<=50000)

而且你排序之后,数组好像也没有传递回来。

建议你重写吧。

0
0
刘睿轩
刘睿轩
中级光能
中级光能

贪心算法,可以用sort快排

0
0
我要回答