查詢與排序05,氣泡排序

Darren Ji發表於2014-10-18

在體驗了"選擇排序"和"插入排序",本篇體驗的是"氣泡排序",依次遍歷陣列中的元素,按照升序排列,如果前一個位置元素比後一個位置元素大,兩者就交換位置。

自定義一個處理整型陣列的類,包含新增、顯示、清除及冒泡方法以及獲取陣列長度的屬性。

    class MyIntArray
    {
        private int[] arr;
        private int upper; //最大索引
        private int index; //當前索引
        public MyIntArray(int size)
        {
            arr = new int[size];
            upper = size - 1;
            index = 0;
        }
        public int Length
        {
            get { return upper + 1; }
        }
        public void Insert(int ele)
        {
            arr[index] = ele;
            index++;
        }
        public void Display()
        {
            for (int i = 0; i <= upper; i++)
            {
                Console.Write(arr[i] + " ");
            }
        }
        public void Clear()
        {
            for (int i = 0; i <= upper; i++)
            {
                arr[i] = 0;
            }
            index = 0;
        }
        //氣泡排序:從最後一個索引開始倒數
        public void BubbleSort()
        {
            int temp;
            //從最大的索引開始往前遍歷,直到索引為1的位置
            for (int i = upper; i >= 1; i--)
            {
                //從最小的索引開始往後遍歷,直到當前元素
                for (int j = 0; j <= i - 1; j++)
                {
                    if (arr[j] > arr[j+1])
                    {
                        temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }
        }
    }


以上,在冒泡方法中,從最後一個索引開始往前遍歷,直到索引為1,然後遍歷從索引為0的位置開始,到當前遍歷元素的前一個位置,只要發現有左邊元素大於右邊元素,兩者就交換位置。

 

客戶端呼叫,在排序後再顯示。

        static void Main(string[] args)
        {
            MyIntArray nums = new MyIntArray(10);
            Random r = new Random(100);
            for (int i = 0; i < nums.Length; i++)
            {
                nums.Insert(r.Next(100));
            }
            nums.BubbleSort();
            nums.Display();
        }

         

“查詢與排序”系列包括:

查詢與排序01,線性查詢,時間複雜度,演算法

查詢與排序02,折半查詢

查詢與排序03,選擇排序

查詢與排序04,插入排序

查詢與排序05,氣泡排序

相關文章