• 冒泡排序


           冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。

         至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。

         由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。

          用二重循环实现,外循环变量设为i,内循环变量设为j。假如有10个数需要进行排序,则外循环重复9次,内循环依次重复9,8,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,...,9,对于每一个i,j的值依次为1,2,...10-i。

    举例:

     1 static void Main(string[] args)
     2         {
     3             //冒泡排序,从小到大排列
     4             int[] a = new int[10] { 9, 10, 5, 8, 7, 4, 3, 1, 6, 2 };
     5 
     6             for (int i = 0; i <a.Length; i++)//外层循环
     7             {
     8                 for (int j = i; j <a.Length-1; j++)//内层循环
     9                 {
    10                     if (a[i]>a[j+1])
    11                     {
    12                         int zhong=a[i];
    13                         a[i] = a[j + 1];
    14                         a[j + 1] = zhong;
    15                     }
    16                 }
    17             }
    18             for (int i = 0; i <a.Length; i++)
    19             {
    20                 Console.WriteLine(a[i]);
    21             }
    22         }

    青歌赛冒泡排序做法,青歌赛打分:20位评委给一个选手打分,去掉一个最高分,去掉一个最低分求歌手的平均得分。

     1  static void Main(string[] args)
     2         {
     3             //青歌赛冒泡排序,青歌赛打分:20位评委给一个选手打分,去掉一个最高分,去掉一个最低分求歌手的平均得分。
     4 
     5             //定义一个数组接收每一个评委的打分。
     6             int[] fenshu = new int[20];
     7 
     8             for (int i = 0; i < 20; i++)//打分
     9             {
    10                 Console.WriteLine("请{0}号评委给选手打分:", i + 1);
    11                 fenshu[i] = Convert.ToInt32(Console.ReadLine());
    12 
    13             }
    14             for (int i = 0; i <fenshu.Length; i++)  //冒泡排序,成绩从大到小依次排列
    15             {
    16                 for (int j = i; j < fenshu.Length-1; j++)
    17                 {
    18                     
    19                     if (fenshu[i]<fenshu[j+1])
    20                     {
    21                         int zhong=fenshu[i];  //  定义中间值
    22                         fenshu[i] = fenshu[j + 1];
    23                         fenshu[j + 1] = zhong;
    24                     }
    25                 }
    26                 
    27             }
    28             Console.WriteLine("去掉一个最低分{0},去掉一个最高分{1}",fenshu[19],fenshu[0]);//最高分经过数组冒泡排序后存放在数组的第一个,最低分存放在数组的最后一个
    29 
    30             double sum = 0;
    31             for (int i = 1; i < 19; i++)//平均分是去掉最高分和最低分以后的18个分数的平均分
    32             {
    33                 sum+=fenshu[i];
    34                 
    35             }
    36             double avg = sum / 18;
    37 
    38             Console.WriteLine("歌手的平均分是:{0}",avg);
    39             
    40         }

    星光大道投票,用switch 完善,20个评委给5个选手投票,输出票数

     1  static void Main(string[] args)//
     2         {
     3             //星光大道投票,用switch 完善,20个评委给5个选手投票,输出票数
     4 
     5             //定义数组当做选手
     6             int[] star = new int[5]{0,0,0,0,0};
     7 
     8             //定义数组存放20个评委的投票
     9             int [] pingwei=new int[20];
    10 
    11             //接收20个投票
    12             for (int i = 0; i < 20; i++)
    13             {
    14                 Console.WriteLine("请第"+(i+1)+"位选手进行投票:(输入1-5代表支持的选手)");
    15                 pingwei[i] = Convert.ToInt32(Console.ReadLine());
    16             }
    17 
    18             //定义一个作废的票数来存放废票
    19             int fei = 0;
    20 
    21             //遍历20个票,给每一位选手加上票数,不是1-5的视为废票
    22             for (int i = 0; i < 20; i++)
    23             {
    24                 switch (pingwei[i])
    25                 {
    26                     case 1:
    27                         star[0]++;
    28                         break;
    29                     case 2:
    30                         star[1]++;
    31                         break;
    32                     case 3:
    33                         star[2]++;
    34                         break;
    35                     case 4:
    36                         star[3]++;
    37                         break;
    38                     case 5:
    39                         star[4]++;
    40                         break;
    41                     default:
    42                         fei++;
    43                         break;
    44                 }
    45             }
    46 
    47             //遍历打印每位选手的票数
    48             for (int i = 0; i <5; i++)
    49             {
    50                 Console.WriteLine("第{0}号选手的得票数为:{1}",i+1,star[i]);
    51 
    52             }
    53             //打印作废的票数
    54             Console.WriteLine("作废的票数是:"+fei);
    55         }
  • 相关阅读:
    [51nod1299]监狱逃离
    [51nod1206]Picture
    noi 2016 游记
    [Codeforces 696D] Legen...
    [bzoj2574] [Poi1999]Store-Keeper
    [bzoj1227] [SDOI2009]虔诚的墓主人
    [bzoj3979] [WF2012]infiltration
    Docker
    SpringBoot实现登录
    SpringBoot第一次案例
  • 原文地址:https://www.cnblogs.com/kellybutterfly/p/5422264.html
Copyright © 2020-2023  润新知