19 条题解

  • 65
    @ 2023-2-11 16:25:41
    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int a[10005], n;
        cin >> n;
        for (int i = 1; i <= n; i++)
        {
            cin >> a[i];
        }
        for (int i = 1; i < n; i++)
        {
            for (int j = i + 1; j <= n; j++)
            {
                if (a[i] > a[j])
                {
                    int t = a[j];
                    a[j] = a[i];
                    a[i] = t;
                }
            }
        }
        for (int i = 1; i <= n; i++)
        {
            cout << a[i] << " ";
        }
        return 0;
    }
    
    • @ 2023-2-11 16:27:00

      为什么不能点赞呢?!!(恼(>_<))

    • @ 2023-3-26 17:46:42

      我就用冒泡排序,怎么地

    • @ 2023-3-26 18:32:24

      #include <iostream> using namespace std; int main() { int n; cin >> n; int a[n + 1]; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int i = 1; i < n; i++) { int min = i; for (int j = i + 1; j <= n; j++) { if (a[min] > a[j]) { min = j; } } int k = a[i]; a[i] = a[min]; a[min] = k; } for (int i = 1; i <= n; i++) { cout << a[i] << " "; } return 0; }

    • @ 2023-4-22 17:17:19

      核oj终于又可以点赞题解了! @

    • @ 2023-5-7 15:04:27

      我点了赞👍

    • @ 2023-7-20 16:41:02

      @可能会TLE,因为冒排时间复杂度较高

    • @ 2023-9-2 14:11:53

      最后不用再遍历输出了吧,每一位排好就可以直接输出了

    • @ 2023-12-9 14:14:15

      用sort函数,没有一点问题

    • @ 2024-2-3 10:59:02

      @ 但是老师会检查代码

    • @ 2024-4-6 11:07:17

      @ 冒泡排序不稳定

    • @ 2024-5-5 10:41:15

      @ me,too

    • @ 2024-5-8 17:24:33

      @

      #include<bits/stdc++.h>
      using namespace std;int main(){int b,a[1000],c;cin>>b;for(c=1;c<=b;c++){cin>>a[c];}sort(a+1,a+1+b);for(c=1;c<=b;c++){cout<<a[c]<<' ';}}
      
  • 7
    @ 2023-7-29 19:30:26
    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int a[10005], n;
        cin >> n;
        for (int i = 1; i <= n; i++)
        {
            cin >> a[i];
        }
        for (int i = 1; i < n; i++)
        {
            for (int j = i + 1; j <= n; j++)
            {
                if (a[i] > a[j])
                {
                    int t = a[j];
                    a[j] = a[i];
                    a[i] = t;
                }
            }
        }
        for (int i = 1; i <= n; i++)
        {
            cout << a[i] << " ";
        }
        return 0;
    }
    
    • 5
      @ 2023-6-9 12:24:36

      来复习一下吧~ 选择排序就是交换两个数的位置

      #include<bits/stdc++.h>
      using namespace std;
      int n,a[1001];
      int main(){   
          cin>>n;
          for(int i=1;i<=n;i++)
              cin>>a[i];
          for(int i=1;i<=n-1;i++){
              for(int j=i+1;j<=n;j++){
                  if(a[i]>a[j]){
                      int k=a[i];
                      a[i]=a[j];
                      a[j]=k;
                  }
              }
          }for(int i=1;i<=n;i++)
              cout<<a[i]<<' ';
          return 0;
      }
      
      
      </span>
      • 3
        @ 2024-1-27 21:30:16
        #include <iostream>   //我就不喜欢打万能头文件,怎么你了?——?C++,启动!
        using namespace std;
        int main()
        {
            int a[10005], n;   //直接一个定义数组启动!
            cin >> n;
            for (int i = 1; i <= n; i++)
            {
                cin >> a[i];
            }
            for (int i = 1; i < n; i++)
            {
                for (int j = i + 1; j <= n; j++)
                {
                    if (a[i] > a[j])
                    {
                        int t = a[j];
                        a[j] = a[i];
                        a[i] = t;
                    }
                }
            }
            for (int i = 1; i <= n; i++)
            {
                cout << a[i] << " ";
            }
            return 0;   //是谁不喜欢return?!我想应该没有人吧。。。
        }
        
        • 2
          @ 2023-12-9 14:10:57

          #include <bits/stdc++.h>

          using namespace std;

          int main()

          {

          int n,a[1005];
          
          cin >> n;
          
          for (int i = 1;i <= n;i++)
          
          {
          
              cin >> a[i];
          
          }
          
          sort(a+1,a+1+n);
          
          for (int i = 1;i <= n;i++)
          
          {
          
          cout << a[i] << " ";
          
          }
          

          }

          他不让我用,我偏用·-·,能把我咋地,哈哈😄 放心食用,能过

          • 2
            @ 2023-11-19 7:35:44

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

            • 2
              @ 2023-9-2 14:05:12

              过辣!

              之前都不知道选择排序是什么,赶快去网上搜了一下。

              就是结合这张图弄明白的:

              点这里

              #include <bits/stdc++.h>
              using namespace std;
              int main()
              {
                  int n,nnin=114514,pos;
                  scanf("%d",&n);
                  int a[n+1];
                  for (int i=1;i<=n;i++)scanf("%d",&a[i]);
                  for (int i=1;i<=n;i++)
                  {
                      nnin=114514;
                      pos=i;
                      for (int j=i;j<=n;j++)
                      {
                          if (a[j]<nnin){
                              nnin=a[j];
                              pos=j;
                          }
                      }
                      a[pos]=a[i];
                      a[i]=nnin;
                      printf("%d ",a[i]);
                  }
                  return 0;
              }
              
            • 2
              @ 2023-8-28 11:00:18
              #include <bits/stdc++.h>
              using namespace std;
              int main()
              {
                  int n, a[10005];
                  cin >> n;
                  for (int i = 1; i <= n; i++)
                      cin >> a[i];
                  for (int i = 1; i < n; i++)
                      for (int j = i + 1; j <= n; j++)
                          if (a[i] > a[j])
                              swap(a[i], a[j]);
                  for (int i = 1; i <= n; i++)
                      cout << a[i] << " ";
                  return 0;
              }
              
              • 2
                @ 2023-8-26 18:40:55

                这里我用了较好理解的冒泡排序,比较简单:首先读取输入,然后嵌套循环,循环里面塞个if:如果前一个比下一个大就互换(注意了!别数组越界了!),最后一个for+输出,就完成了,十分简单是不是,“只要”30行哦!(可恶!不让我用sort),代码如下:

                #include
                <bits/stdc++.h>
                using namespace std;
                long long n,a[100000000],b;
                int main(){
                    cin>>n;
                    for(int i=0;i<n;i++){
                        cin>>a[i];
                    }
                    for(int i=0;i<n;i++){
                        for(int j=0;j<n;j++){
                            if(a[j]>a[j+1]){
                                b=a[j];
                                a[j]=a[j+1];
                                a[j+1]=b;
                    }
                        }
                            }
                    for(int i=1;i<=n;i++){
                        cout<<a[i]<<" ";
                    }
                    return 0;
                }
                
                • 2
                  @ 2023-8-23 18:08:06
                  #include <iostream>
                  #include <cstdio>
                  
                  using namespace std;
                  
                  template <class T>
                  void selection_sort(T arr[], int length)
                  {
                      for (int i = 1; i < length; ++i)
                      {
                          int min_idx = i;
                          for (int j = i; j < length; ++j)
                          {
                              if (arr[j] < arr[min_idx])
                              {
                                  min_idx = j;
                              }
                          }
                  
                          if (arr[min_idx] < arr[i - 1])
                          {
                              swap(arr[min_idx], arr[i - 1]);
                          }
                      }
                  }
                  
                  int main()
                  {
                      int n;
                      cin >> n;
                      int arr[n];
                      for (auto& i : arr)
                      {
                          cin >> i;
                      }
                  
                      selection_sort<int>(arr, n);
                  
                      for (auto i : arr)
                      {
                          cout << i << ' ';
                      }
                  
                      return 0;
                  }
                  

                  (为什么往滴选择排序跟你们不一样???)

                  • 1
                    @ 2024-5-18 13:17:14

                    桶排天下第一!!!

                    #include <bits/stdc++.h>
                    using namespace std;
                    int n, a[10005], num;
                    int main() {
                    	scanf("%d", &n);
                    	for (int i = 1; i <= n; i++)
                    		scanf("%d", &num), a[num]++;
                    	for (int i = 0; i <= 10000; i++) 
                    		for(int j=1;j<=a[i];j++)
                    			printf("%d ", i);
                    	return 0;
                    }
                    
                    • 1
                      @ 2024-5-8 17:48:23

                      sort排序:

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

                      结果:

                      ✔️100 Accepted

                      # 状态分数 耗时 内存占用
                      #1 ✔️Accepted 20 1ms 7.7 MiB
                      #2 7.6 MiB
                      #3 7.5 MiB
                      #4 7.7 MiB
                      #5 0ms
                      • 1
                        @ 2024-2-2 22:09:37

                        这是正常的

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

                        这是不正常的

                        #include <cstdio>
                        using namespace std;
                        int n,book[100005];
                        void quicksort(int l,int r)
                        {
                            int i,j,t,temp;
                            if(l>r)
                                return;
                            temp=book[l];
                            i=l;
                            j=r;
                            while (i!=j)
                            {
                                while (book[j]>=temp && i<j)
                                {
                                    j--;
                                }
                                while (book[i]<=temp && i<j)
                                   i++;
                                if(i<j)
                                {
                                    t=book[i];
                                    book[i]=book[j];
                                    book[j]=t;
                                }
                            }
                            book[l]=book[i];
                            book[i]=temp;
                        
                            quicksort(l,i-1);
                            quicksort(i+1,r);
                            return;
                        }
                        int main()
                        {
                            int i,j;
                            scanf("%d",&n);
                            for(i=1;i<=n;i++)
                               scanf("%d",&book[i]);
                            quicksort(1,n);
                            for(i=1;i<=n;i++)
                                printf("%d ",book[i]);
                            return 0;
                        }
                        
                        
                      • 1
                        @ 2023-8-5 18:38:06

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

                        • 1
                          @ 2023-7-20 16:39:30
                          #include <cstdio>
                          #include <algorithm>
                          using namespace std;
                          int main(){
                              int n,a[1001];
                              scanf("%d",&n);
                              for(int i=0;i<n;i++)scanf("%d",&a[i]);
                              for(int i=0;i<n-1;i++)for(int j=i+1;j<n;j++)if(a[i]>a[j])swap(a[i],a[j]);
                              for(int i=0;i<n;i++)printf("%d%c",a[i],' ');
                              return 0;
                          }
                          
                          • 1
                            @ 2023-7-12 17:45:12

                            #include<bits/stdc++.h> using namespace std; long long a[10001]; int main(){ int y; cin >> y; for(int i=1; i<=y; i++)cin >> a[i]; for(int i=1; i<=y; i++){ for(int j=i+1; j<=y; j++){ if(a[i]>a[j])swap(a[i],a[j]); } } for(int i=1; i<=y; i++)cout << a[i] << " "; return 0; } //我的代码

                            • 1
                              @ 2023-4-1 22:44:37

                              我还是分不清哪个是冒泡那个是排序/_\

                              • @ 2023-7-24 16:50:25

                                冒泡排序就是把相邻两个数比较并交换,选择排序就是只要发现比当前位置小的就交换

                            • 1
                              @ 2022-12-18 20:38:34

                              #include <bits/stdc++.h> using namespace std; int n,a[1005]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } for(int i=1;i<n;i++) { int minj=i; for(int j=minj+1;j<=n;j++) { if(a[j]<a[minj]) { minj=j; } } int t=a[i]; a[i]=a[minj]; a[minj]=t; } for(int i=1;i<=n;i++) { cout<<a[i]<<" "; } return 0; }

                              • -13
                                @ 2022-4-29 13:15:08

                                本题禁止题解,如果忘了如何写请回头翻看讲义或者观看课程视频。保证自己可以不依靠外力手写排序代码。

                                使用sort排序会被取消成绩,请知悉。

                                • @ 2023-3-26 17:46:58

                                  我就用冒泡排序,怎么地

                                • @ 2023-4-5 19:54:32

                                  @[](/user/3753)小心踢你

                                • @ 2023-6-29 18:41:28

                                  @[戚恒毅(hetao4749053)男 (hetao4749053) ]: 棍气!!!赞成!!!

                                • @ 2023-9-2 14:10:08

                                  冒泡排序时间复杂度有点高……@

                              • 1

                              信息

                              ID
                              1471
                              时间
                              1000ms
                              内存
                              256MiB
                              难度
                              5
                              标签
                              递交数
                              2018
                              已通过
                              740
                              上传者