天天看點

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