19 条题解

  • 62
    @ 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]<<' ';}}
      
  • 5
    @ 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>
      • 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-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
            @ 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?!我想应该没有人吧。。。
            }
            
            • 1
              @ 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] << " ";
              
              }
              

              }

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

              • 1
                @ 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; }

                • 1
                  @ 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;
                  }
                  
                • 1
                  @ 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;
                  }
                  
                  • 1
                    @ 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;
                    }
                    
                    • 0
                      @ 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;
                      }
                      
                      • 0
                        @ 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; }

                        • 0
                          @ 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;
                          }
                          
                          • 0
                            @ 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; } //我的代码

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

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

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

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

                            • 0
                              @ 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; }

                              • -12
                                @ 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
                              标签
                              递交数
                              1871
                              已通过
                              667
                              上传者