排序算法之冒泡

思想步骤:

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

给一个数组:

 int[] arry = { 5, 1, 0, 4, 2, 8};

首先找出最一轮冒泡的过程:

复制代码
static void Main(string[] args)
        {
           
            int[] arry = { 5, 1, 0, 4, 2, 8 };
            FristMaopo(arry);
        }
//第一轮冒泡
static void FristMaopo(int[] arry) { //arry.Length-1 因为j和j+1比较所以要减1 for (int j = 0; j < arry.Length-1; j++) { if (arry[j] > arry[j + 1]) { var tempVal = arry[j + 1]; arry[j + 1] = arry[j]; arry[j] = tempVal; } } //输出打印 PrintCw(arry); }
复制代码

 

 

 

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。这个话的意思是 大家都要冒泡,那就加一个循环哦,即双循环(n^2)

复制代码
  static void Main(string[] args)
        {
            int[] arry = { 5, 1, 0, 4, 2, 8 };
            for (int i = 0; i < arry.Length; i++)
            {
                //FristMaopo(arry);
                //FristMaopo里面的代码加入进来就可以了
                //arry.Length-1  因为j和j+1比较所以要减1。减i (-i 冒了多少轮就减多少i)
                for (int j = 0; j < arry.Length -1-i; j++)
                {
           //替换
if (arry[j] > arry[j + 1]) { var tempVal = arry[j + 1]; arry[j + 1] = arry[j]; arry[j] = tempVal; } } } //输出打印 PrintCw(arry); }
复制代码

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
static void Main(string[] args)
        {
            int[] arry = { 5, 1, 0, 4, 2, 8 };
            for (int i = 0; i < arry.Length; i++)
            {
                //FristMaopo(arry);
                //FristMaopo里面的代码加入进来就可以了
                //arry.Length-1  因为j和j+1比较所以要减1。减i (-i 冒了多少轮就减多少i)
                for (int j = 0; j < arry.Length -1-i; j++)
                {
                    if (arry[j] > arry[j + 1])
                    {
                        var tempVal = arry[j + 1];
                        arry[j + 1] = arry[j];
                        arry[j] = tempVal;
                    }
                }
                for (int k = 0; k < arry.Length; k++)
                {
                    Console.Write( arry[k] + " ");
                }
                Console.WriteLine();
            }
            //输出打印
            Console.WriteLine("得到最终效果是:");
            PrintCw(arry);
        }

  

 

 算法还可以继续优化的

 

posted @   KyrieYang  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示