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

 

posted on 2016-05-30 08:10  bluecountry  阅读(291)  评论(0编辑  收藏  举报