.NET 隨筆

隨手紀錄一些心得,虛心才是王道!

英文園地

最新回應

Introduction

基本原理就是把每兩個鄰近的物件作比較,大小次序不對時就互換。每次比完一輪(一回)後最大值就會被移到最右邊。

比方說 List 中有 N 個元素。

所以必須比較 n - 1 回。每回比較 n - i 次。

當有一輪,沒有任何交換的動作發生時,代表排序已完成。

 

Examples

 

   public static void bubbleSort(int[] list) {
            int n = list.Length;
            int temp;
            int Flag = 1; //旗標
            int i;
            for (i = 1; i <= n - 1 && Flag == 1; i++) {    // 外層迴圈控制比較回數
                Flag = 0;
                for (int j = 1; j <= n - i; j++) {  // 內層迴圈控制每回比較次數            
                    if (list[j] < list[j - 1]) {  // 比較鄰近兩個物件,右邊比左邊小時就互換。	       
                        temp = list[j];
                        list[j] = list[j - 1];
                        list[j - 1] = temp;
                        Flag = 1;
                    } 	
                }             
            }   
        } 

        static void Main(string[] args) {
            int[] list = new int[6] { 3, 4, 6, 8, 9, 7 };
            Console.WriteLine("Before sort");
            for (int n = 0; n < list.Length; n++)
                Console.Write(list[n] + " ");
            bubbleSort(list);
            Console.WriteLine("\nAfter sort");
            for (int n = 0; n < list.Length; n++)
                Console.Write(list[n] + " ");

            Console.ReadKey();
        }

 

Refrence

http://en.wikipedia.org/wiki/Bubble_sort

三小俠  小弟獻醜,歡迎指教



DotBlogs Tags: C#

回應

  • 曾仁柏 2011/10/5 下午 10:55 回覆

    # re: [C#] 氣泡排序法 (Bubble Sort)

    請問一下
    "外層迴圈控制比較回數" 可以解釋成說有幾個數 外層迴圈就跑幾次嘛?
    "內層迴圈控制每回比較次數" 可以解釋成 每個數比較幾次嘛?

*標  題:

*姓  名:

  電子郵件: (將不會被顯示)

  個人網頁:

*回應

登入後使用進階評論

Please add 6 and 4 and type the answer here: