2 条题解

  • 1
    @ 2022-9-28 17:26:37

    朴素做法

    #include <bits/stdc++.h>
    using namespace std;
    int n;
    int a[1005];
    int b[1005];
    int main()
    {
        cin >> n;
        for (int i = 1; i <= n; i++)
        {
            cin >> a[i];
            b[i] = i;
        }
        //用选择排序对下标排序
        for (int i = 1; i <= n; i++)
            for (int j = i + 1; j <= n; j++)
                if (a[b[i]] > a[b[j]])
                    swap(b[i], b[j]);
        for (int i = 1; i <= n; i++)
            cout << b[i] << " ";
        return 0;
    }
    

    自定义比较函数

    #include <bits/stdc++.h>
    using namespace std;
    int n;
    int a[1005];
    int b[1005];
    bool cmp(int x, int y)
    {
        return a[x] < a[y];
    }
    int main()
    {
        cin >> n;
        for (int i = 1; i <= n; i++)
        {
            cin >> a[i];
            b[i] = i;
        }
        //用选择排序对下标排序
        for (int i = 1; i <= n; i++)
            for (int j = i + 1; j <= n; j++)
                if (!cmp(b[i], b[j]))
                    swap(b[i], b[j]);
        for (int i = 1; i <= n; i++)
            cout << b[i] << " ";
        return 0;
    }
    
    • 0
      @ 2022-9-28 18:16:39

      既然有sort为什么要自己敲排序呢 由于不需要考虑重复关键字,所以可以直接使用sort排序而非stable_(稳定的sort)

      sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。sort函数进行排序的时间复杂度为n*log2n,比冒泡之类的排序算法效率要高,sort函数包含在头文件为#include的c++标准库中。——百科

      sort大法好

      #include<bits/stdc++.h>
      using namespace std;
      struct sz
      {
      	int a,b;
      }px[2010];//a为每一个数的数值,b为下标
      bool cmp(sz x,sz y)
      {
      	return x.a<y.a;
      }//cmp函数返回排序最终状态,即'<'
      int main()
      {
      	int n;
      	cin>>n;
      	for(int i=1;i<=n;i++)
      	{
      		cin>>px[i].a;
      		px[i].b=i;
      	}//赋值 赋下标
      	sort(px+1,px+1+n,cmp);//排序主体
      	for(int i=1;i<=n;i++)
      		cout<<px[i].b<<" ";
      	return 0;
      }
      
      • 1

      信息

      ID
      1072
      时间
      1000ms
      内存
      256MiB
      难度
      1
      标签
      递交数
      85
      已通过
      58
      上传者