首页 > 代码库 > 冒泡排序

冒泡排序

主要思想:依次比较相邻连个数,如果后面的(数组[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;                    }                }                            }        }