1. 程式人生 > >氣泡排序和改進的氣泡排序-c#程式碼

氣泡排序和改進的氣泡排序-c#程式碼

  • 氣泡排序原理:
  • 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
  • 對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
  • 針對所有的元素重複以上的步驟,除了最後一個。
  • 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
  • 改進氣泡排序思想:
  • 傳統氣泡排序中每一趟排序操作只能找到一個最大值或最小值
  • 我們考慮利用在每趟排序中進行正向和反向兩遍冒泡的方法一次可以得到兩個最終值(最大者和最小者) , 從而使排序趟數幾乎減少了一半。
class BubbleSort
    {
        //氣泡排序
        public void Sort(int[] arr) {
            for (int i=0;i<arr.Length-1;i++) {
                for (int j=0;j<arr.Length-1-i;j++) {
                    if (arr[j] > arr[j+1]) {
                        int temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }
        }

        //改進氣泡排序
        public void GaiJSort(int[] arr) {
            int low = 0;
            int high = arr.Length - 1;
            while (low < high) {
                for (int i = low; i < high; i++) {
                    if (arr[i] > arr[i + 1])
                    {
                        int temp = arr[i];
                        arr[i] = arr[i + 1];
                        arr[i + 1] = temp;

                    }
                }
                high--;
                for (int j=high;j>low;j--) {
                    if (arr[j] < arr[j - 1]) {
                        int temp = arr[j];
                        arr[j] = arr[j - 1];
                        arr[j - 1] = temp;
                    }
                }
                low++;

            }
        }
    }