天天看点

C#--冒泡排序

冒牌排序概念

排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。

原理

原理

比较相邻的元素,把较大的元素放到前面,以此类推直至一行结束,由上述得到新的一行,再依据新的一行进行比较,因为第二行是在原行比较的基础上进行的,所以二行靠后的数字(在第一行中比下来的)可以省去比较的步骤。以此类推到无元素需要比较。

图形示意

例如我们将1、2、3、4、5进行冒泡处理(采用有小到大)

C#--冒泡排序

解释图形

已知原有为1、2、3、4、5。在原值的基础上开始比较。也就是拿1进行比较。

1与2比2打,所以把二放在前面,1与3比3大,故再次交换位置,一次类推得到第二行(第一次比较,一共比较四次)

这个时候还是可以继续比较的,故我们在二行的基础上继续,2与3比,3大交换位置,以此类推得到第三行(第二次比较,比较三次)后续以此类推至到无可比。

代码
//i:比数  j:比较轮数
            int[] nums = new int[] { 1, 2, 3, 4, 5, 6 };
            int temp = 0;
           
            for (int j=0;j<nums.Length-1;j++)
            {
                for (int i=0;i<nums.Length-1-j;i++)
                {
                    if (nums[i]>nums[i+1])//实现循环比较
                    {
                        temp = nums[i];
                        nums[i] = nums[i + 1];
                        nums[i + 1] = temp;
                    }
                }
            }
            for (int i = 0;i < nums.Length;i++ )
            {
                Console.WriteLine(nums[i]+"\t");
            }
            Console.ReadKey();