9 条题解

  • 2
    @ 2024-5-25 19:41:02

    计数排序的原理就是把所有的数按照数值进行归类,再按照顺序依次把归类好的数输出,其中要注意的是cnt数组长度需要定义为输入数据的最大值。 @ hetao1802625你是抄 @ Super Fridge 的代码吧😕 ~

    #include <bits/stdc++.h>
    
    using namespace std;
    int n,a[100005];
    int main()
    {
        cin>>n;
        for(int i = 1;i <= n;i++)
        {
            cin >> a[i];
        }
        sort(a + 1,a + n + 1);
        for(int i = 1;i <= n;i++)
        {
            cout << a[i] << ' ';
        }
    }
    
    • 2
      @ 2024-5-5 11:12:59

      想偷懒找我,变一下变量名就不会被发现复制题解了。(我用人格担保我没抄题解,且已AC)

      #include <bits/stdc++.h>
      using namespace std;
      int a[100001],n;
      int main()
      {
      cin >> n;
      for(int i = 1;i <= n;i++) cin >> a[i];
      sort(a+1,a+n+1);
      for(int i = 1;i <= n;i++) cout << a[i] << ' ';
      return 0;
      }
      

      一个赞拿走~~

      • 2
        @ 2023-11-11 15:54:47

        这不就是计数排序

        #include <bits/stdc++.h>
        using namespace std;
        int n, a[100005];
        int main()
        {
            cin >> n;
            for (int i = 1; i <= n; i++)
            {
                int x;
                cin >> x;
                a[x]++;
            }
            for (int i = 1; i <= 100005; i++)
            {
                if (a[i] >= 0)
                    for (int j = 1; j <= a[i]; j++)
                        cout << i << " ";
            }
            return 0;
        }
        
        • 2
          @ 2023-9-1 13:28:24

          解析

          计数排序的原理就是把所有的数按照数值进行归类,再按照顺序依次把归类好的数输出,其中要注意的是cnt数组长度需要定义为输入数据的最大值。

          题解

          
          // 定义,输入
          int a[50005];
          int n;
          cin >> n;
          for (int i = 1; i <= n; i++)
              cin >> a[i];
          // 排序_start
          int cnt[1005]; // 计数,cnt[i]是i出现的次数
          // 清零
          for (int i = 1; i <= 1000; i++)
              cnt[i] = 0;
          // 计数
          for (int i = 1; i <= n; i++)
              cnt[a[i]]++; // 当前的数(a[i])出现的次数(cnt[a[i]])加1
          // 排序_end
          // 输出_start
          for (int i = 1; i <= 1000; i++)
          {
              while (cnt[i] > 0)
              { // 当前的数(i)的个数(cnt[i])还有的话
                  cout << i << " ";
                  cnt[i]--; // 输出了一个i,cnt[i]少一个
              }
          }
          // 输出_end
          
          
          • 1
            @ 2023-11-18 15:31:28

            do you love sort()?

            #include<bits/stdc++.h>
            using namespace std;
            int main()
            {
                int a[100000],n;
                cin>>n;
                for(int i=1;i<=n;i++)
                {
                    cin>>a[i];
                }
                sort(a+1,a+n+1);
                for(int i=1;i<=n;i++)
                {
                    cout<<a[i]<<' ';
                }
            }
            
          • 0
            @ 2024-5-2 17:22:22
            #include<iostream>
            using namespace std;
            long long n,a[1001];
            int main()
            {
                cin >> n;
                int x;
                for(int i=1;i<=n;i++)
                {
                    cin >> x;
                    a[x]++;
                }
                for(int i=0;i<=1000;i++)
                {
                    for(int j=1;j<=a[i];j++)
                    {
                        cout << i << " ";
                    }
                }
                return 0;
            }
            
          • 0
            @ 2024-1-27 18:48:47
            不是我不喜欢其它排序,只是
            Accepted 0ms 7696KiB
            
            #include <iostream>
            using namespace std;
            int n, a[100005], t[100005];
            void MergeSort(int l, int r)
            {                                                                                    
                if (l == r)
                    return;
                int mid = (l + r) / 2;
                MergeSort(l, mid);
                MergeSort(mid+1, r);
                int pl = l;
                int pr = mid + 1;
                int pt = l;
                while (pl <= mid && pr <= r)
                {
                    if (a[pl] <= a[pr])
                        t[pt++] = a[pl++];
                    else
                        t[pt++] = a[pr++];
                }
                while (pl <= mid)
                    t[pt++] = a[pl++];
                while (pr <= r)
                    t[pt++] = a[pr++];
                for (int i = l; i <= r; i++)
                    a[i] = t[i];
            }
            int main()
            {
                cin >> n;
                for (int i = 1; i <= n; i++)
                    cin >> a[i];
                MergeSort(1, n);
                for (int i = 1; i <= n; i++)
                    cout << a[i] << " ";
                return 0;
            }
            
            • 0
              @ 2023-11-18 20:12:37

              课上的原题+a数组开大一点=AC code

              #include <bits/stdc++.h>
              using namespace std;
              int n, a[100000005];
              void qsort(int l, int r)
              {
                  int x = a[(l + r) / 2];
                  int i = l;
                  int j = r;
                  while(i <= j)
                  {
                      while(a[i] < x)
                      {
                          i++;
                      }
                      while(a[j] > x)
                      {
                          j--;
                      }
                      if(i <= j)
                      {
                          swap(a[i],a[j]);
                          i++;
                          j--;
                      }
                  }
                  if(l < j)
                  {
                      qsort(l,j);
                  }
                  if(i < r)
                  {
                      qsort(i,r);
                  }
              }
              int main()
              {
                  cin >> n;
                  for (int i = 1; i <= n; i++)
                      cin >> a[i];
                  qsort(1, n);
                  for (int i = 1; i <= n; i++)
                      cout << a[i] << " ";
                  return 0;
              }
              
              
              • -1
                @ 2023-9-11 17:56:08

                sort()

                • 1

                信息

                ID
                486
                时间
                1000ms
                内存
                256MiB
                难度
                3
                标签
                递交数
                413
                已通过
                212
                上传者