zoukankan      html  css  js  c++  java
  • 排序算法之冒泡排序

            static void Main(string[] args)
            {
                int[] array = {90,36,52,23,235,314,131,3,456,34};
                BubbleSort(array);
                Console.ReadLine();
            }
    
             
            /// <summary>
            /// 名称:冒泡排序
            /// 原理:如果有n个数进行排序,需要将n-1个数进行归位,即需要进行n-1趟。而每一趟都需要从第1个数字开始比较,直到最后一位尚未归位的数.
            /// 举例:10个数进行排序,第一趟最小的数会归位到最后一位,即第10位,第二趟将倒数第2位上的数归位,第三趟将倒数第3位上的数归位,依此归推,最后一趟不用再归位,因为第1位已经归好位
            /// 时间复杂度:最坏情况是O(n的平方) 最好情况是O(n)
            /// 优化:增加一个标识变量,当比较序列为{2,1,3,4,5,6,7,8,9,10},只需要进行一次比较即可,时间复杂度为O(n)
            /// </summary>
            /// <param name="array"></param>
            static void BubbleSort(int[] array)
            {
                bool flag = true;
                for (int i = 0; i < array.Length && flag; i++)
                {
                    flag = false;
                    //如果j从0开始则array[j]<array[j+1] j+1会越界
                    for (int j = 1; j < array.Length - i; j++)
                    {
                        Console.WriteLine(string.Format("i={0},j={1}",i,j));
                        if (array[j-1] > array[j])
                        {
                            var t = array[j - 1];
                            array[j - 1] = array[j];
                            array[j] = t;
                            flag = true;
                        }
                    }
                }
                Console.WriteLine("冒泡排序后的结果是:");
                foreach (var item in array)
                {
                    Console.WriteLine(item);
                }
            }
  • 相关阅读:
    几个概率题
    几个智力题。。
    [算法]各种二分查找
    深入 JavaScript 时间对象 Date
    Leaflet 调用百度瓦片地图服务
    JavaScript中进制和字符编码问题
    DOM事件流
    flex 弹性布局
    javascript 闭包内部机制
    HTML DOM setAttribute()、与createAttribute()
  • 原文地址:https://www.cnblogs.com/bluecountry/p/5541066.html
Copyright © 2011-2022 走看看