• 冒泡排序简单操作模版及实例分析


     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 inline int read()
     4 {
     5     int x=0,f=1;
     6     char ch=getchar();
     7     while(ch<'0'||ch>'9')
     8     {
     9         if(ch=='-')
    10             f=-1;
    11         ch=getchar();
    12     }
    13     while(ch>='0'&&ch<='9')
    14     {
    15         x=x*10+ch-'0';
    16         ch=getchar();
    17     }
    18     return x*f;
    19 }
    20 inline void write(int x)
    21 {
    22     if(x<0)
    23     {
    24         putchar('-');
    25         x=-x;
    26     }
    27     if(x>9)
    28     {
    29         write(x/10);
    30     }
    31     putchar(x%10+'0');
    32 }
    33 int a[100];
    34 int n;
    35 int main()
    36 {
    37     cin>>n;
    38     for(int i=1;i<=n;i++)
    39         cin>>a[i];
    40     //从小到大排序
    41     /*
    42     for(int i=1;i<=n-1;i++)
    43     {
    44         for(int j=1;j<=n-i;j++)
    45         {
    46             if(a[j]>a[j+1])
    47                 swap(a[j],a[j+1]);
    48         }
    49     }
    50     */
    51     //从大到小排序
    52     for(int i=1;i<=n-1;i++)
    53     {
    54         for(int j=1;j<=n-i;j++)
    55         {
    56             if(a[j]<a[j+1])
    57                 swap(a[j],a[j+1]);
    58         }
    59     }
    60     for(int i=1;i<=n;i++)
    61         cout<<a[i]<<" ";
    62     return 0;
    63 }

    实例分析:

     1 //题意:输入一个整数n,表示有n个人,接下n行每行对应一个人名和此人的成绩,按照成绩从大到小的顺序输出人名
     2 //分析:冒泡排序的简单使用
     3 #include <bits/stdc++.h>
     4 using namespace std;
     5 inline int read()
     6 {
     7     int x=0,f=1;
     8     char ch=getchar();
     9     while(ch<'0'||ch>'9')
    10     {
    11         if(ch=='-')
    12             f=-1;
    13         ch=getchar();
    14     }
    15     while(ch>='0'&&ch<='9')
    16     {
    17         x=x*10+ch-'0';
    18         ch=getchar();
    19     }
    20     return x*f;
    21 }
    22 inline void write(int x)
    23 {
    24     if(x<0)
    25     {
    26         putchar('-');
    27         x=-x;
    28     }
    29     if(x>9)
    30     {
    31         write(x/10);
    32     }
    33     putchar(x%10+'0');
    34 }
    35 struct Student
    36 {
    37     char score;
    38     char name[20];
    39 }p[100];
    40 int main()
    41 {
    42     int n;
    43     cin>>n;
    44     for(int i=1;i<=n;i++)
    45         cin>>p[i].name>>p[i].score;
    46     for(int i=1;i<=n-1;i++)
    47     {
    48         for(int j=1;j<=n-i;j++)
    49         {
    50             if(p[j].score<p[j+1].score)
    51                 swap(p[j],p[j+1]);
    52         }
    53     }
    54     for(int i=1;i<=n;i++)
    55         cout<<p[i].name<<endl;
    56     return 0;
    57 }
    58 /*
    59 5
    60 huhu 5
    61 haha 3
    62 xixi 5
    63 hengheng 2
    64 gaoshou 8
    65 */

     时间复杂度为O(n^2)

  • 相关阅读:
    CF598E Chocolate Bar 题解 动态规划
    CF864E Fire 题解 背包DP
    用 程序 解决 windows防火墙 的 弹窗 问题
    windbg 使用与技巧
    bat 下 字符串拆分 类似 split 可以使用 for /f delims
    vs2013 在按F5调试时,总是提示 “项目已经过期”的解决方案
    代理与反向代理
    关于维护用户状态的一致性
    视频的裁剪后缩放功能。
    通信协议的设计
  • 原文地址:https://www.cnblogs.com/ECJTUACM-873284962/p/7149500.html
Copyright © 2020-2023  润新知