C#代码实现-冒泡排序

不打扰是莪最后的温柔 提交于 2020-02-26 14:51:41

冒泡排序原理:(升序)通过当前位置数和后一个位置数进行比较 如果当前数比后一个数大 则交换位置, 完成后 比较基数的位置变成下一个数。直到数组末尾,当程序运行完第一遍 最大的数已经排序到最后一个位置了。次数可以减少循环数不用管最后一个数

降序排序同理 不过是把比较方式变成判断当前数是否小于下一个数 如果小于则交换

下面直接上代码

 

 

双重循环方式:

 1 using System;
 2 using System.Collections.Generic;
 3 
 4 namespace TestConsole
 5 {
 6     class Program
 7     {
 8         static void Main(string[] args)
 9         {
10             //创建一个乱序数组
11             List<int> ints = new List<int> { 1, 2, 3, 4, 8, 6, 4, 1, 0, 5, 5, 0, 5, 1, 16, 1, 32, 1, 54, 68, 4, 21, 56, 14, 856, 48, 6, 12, 3, 5 };
12 
13             //获取数组长度
14             int count = ints.Count;
15 
16             //外圈循环 数组有多少个数就循环多少次  每完成一次内部循环减少一次外部循环(最后一个数以经是最大  不用参与比较了)
17             for (int i = count; i > 0; i--)
18             {
19                 //内部循环  比较当前位置数和下一个位置的数大小
20                 for (int j = 0; j < i; j++)
21                 {
22                     //判断是否到数组尾
23                     if (j + 1 == i) continue;
24                     //判断当前数是否比下一个数大
25                     if (ints[j] > ints[j + 1])
26                     {
27                         //把当前数替换到临时变量
28                         var t = ints[j];
29                         //把下一个数替换到当前位置
30                         ints[j] = ints[j + 1];
31                         //把临时变量替换到下一个数的位置
32                         ints[j + 1] = t;
33                     }
34                 }
35                 //减少外圈循环
36                 count--;
37             }
38             Console.WriteLine(string.Join(",", ints)/*string.Join("分隔符",对象数组)  用于把数组元素分割成字符串*/ );
39             Console.ReadKey();
40         } 
41     }
42 }

while实现方式:

 1 using System;
 2 using System.Collections.Generic;
 3 
 4 namespace TestConsole
 5 {
 6     class Program
 7     {
 8         static void Main(string[] args)
 9         { 
10             //创建一个乱序数组
11             List<int> ints = new List<int> { 1, 2, 3, 4, 8, 6, 4, 1, 0, 5, 5, 0, 5, 1, 16, 1, 32, 1, 54, 68, 4, 21, 56, 14, 856, 48, 6, 12, 3, 5 };
12 
13             //获取数组长度
14             int count = ints.Count;
15 
16             //外圈循环 数组有多少个数就循环多少次  每完成一次内部循环减少一次外部循环(最后一个数以经是最大  不用参与比较了)
17             while (count > 0)
18             {
19                 //内部循环  比较当前位置数和下一个位置的数大小
20                 for (int j = 0; j < count; j++)
21                 {
22                     //判断是否到数组尾
23                     if (j + 1 == count) continue;
24                     //判断当前数是否比下一个数大
25                     if (ints[j] > ints[j + 1])
26                     {
27                         //把当前数替换到临时变量
28                         var t = ints[j];
29                         //把下一个数替换到当前位置
30                         ints[j] = ints[j + 1];
31                         //把临时变量替换到下一个数的位置
32                         ints[j + 1] = t;
33                     }
34                 }
35                 //减少外圈循环
36                 count--;
37             } 
38             Console.WriteLine(string.Join(",", ints)/*string.Join("分隔符",对象数组)  用于把数组元素分割成字符串*/ );
39             Console.ReadKey();
40         }
41     }
42 }

纯属个人理解,如果偏差请各位大佬指正~~~~

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!