码迷,mamicode.com
首页 > 其他好文 > 详细

冒泡排序

时间:2014-06-27 20:51:06      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   color   数据   

主要思想:依次比较相邻连个数,如果后面的(数组[j])数大于前面的(数组[j-1]),则将两个数交换位置

1.最简单实现:采用双重循环,外层进行控制,内层进行比较

第一次比较第0个元素一直到第n-1个元素(比较完成后最后一个元素肯定为最大的),第二次只需比较第0个元素到第n-2个元素

public static void BubbleSort1(int[] ary)
        {
            int n = ary.Length;
            for (int i = 0; i < n; i++)
            {
                for (int j = 1; j < n - i; j++)
                {
                    if (ary[j - 1] > ary[j])
                    {
                        int temp = ary[j - 1];
                        ary[j - 1] = ary[j];
                        ary[j] = temp;
                    }
                }
            }
    }

2.采用标志位的形式标识这一趟是否发生了排序,如果未发生排序则说明已经排序完成

public static void BubbleSort2(int[] ary)
        {
            bool flag = true;
            while (flag)
            {
                flag = false;
                int n = ary.Length;
                for (int i = 1; i < n; i++)
                {
                    if (ary[i - 1] > ary[i])
                    {
                        int temp = ary[i - 1];
                        ary[i - 1] = ary[i];
                        ary[i] = temp;
                        flag = true;
                    }
                    n = n--;                    
                }
                //for (int t = 0; t < ary.Length; t++)
                //{
                //    Console.Write(ary[t] + " ");
                //    if (((t + 1) / ary.Length) == 1)
                //        Console.WriteLine();
                //}
               
            }
        }

3。假设共有20条数据,第15个元素之后的数据已经是拍好顺序的,此时记录这个位置,下一次排序则只需要从0到15即可

public static void BubbleSort3(int[] ary)
        {
            int flag = ary.Length;    
            while (flag > 0)
            {
                flag = 0;
                for (int j = 1; j < ary.Length; j++)
                {
                    if (ary[j - 1] > ary[j])
                    {
                        int temp = ary[j - 1];
                        ary[j - 1] = ary[j];
                        ary[j] = temp;
                        flag = j;
                    }
                }                
            }
        }

冒泡排序,布布扣,bubuko.com

冒泡排序

标签:style   class   blog   code   color   数据   

原文地址:http://www.cnblogs.com/justforcoding/p/3807507.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!