• 排序算法之冒泡


    思想步骤:

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

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

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

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

    给一个数组:

     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); }

    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);
            }
    

      

     算法还可以继续优化的

  • 相关阅读:
    git 派生子项目、分支、主干、合并
    C# 动态调用WebService
    sql导出数据库表结构Excel
    SQL Server 删除重复记录
    ThoughtWorks笔试题之Merchant's Guide To The Galaxy解析
    设置电信光猫为桥接模式
    Finder(文件内容搜索工具)
    数独解法(C#)
    Boyer-Moore (C#)
    Dijstra(C#)
  • 原文地址:https://www.cnblogs.com/yzenet/p/15886118.html
Copyright © 2020-2023  润新知