排序算法——冒泡排序.net實現

排序算法——冒泡排序.net實現

基本思想

冒泡排序的思想就是每次比較兩個相鄰的元素,如果它們的順序錯誤就把它們位置交換,直到所有元素位置正確。

算法圖例

例如我們需要將12 35 99 18 76 這5 個數進行從大到小的排序。
首先比較第一位和第二位,發現12比35小,那麼需要交換位置,交換結果爲35 12 99 18 76;
按照剛纔的方法再比較第二位和第三位,12比99小需要交換位置,交換結果爲35 99 12 18 76;
循環按照以上方法繼續比較第三位和四位以及第四位和第五位,最終結果爲35 99 18 76 12,經過這一輪四次比較,我們發現最小的數12已經成功就位。
每次都是比較相鄰的兩個數,如果後面的數比前面的數大,則交換這兩個數的位置。一直比較下去直到最後兩個數比較完畢後,最小的數就在最後一個了。就如同是一個氣泡,一步一步往後“翻滾”,直到最後一位。所以這個排序的方法有一個很好聽的名字“冒泡排序”。
在這裏插入圖片描述
然後我們重複上面的過程進行第二輪比較,依次比較第一位和第二位,第二位和第三位,第三位和第四位,(第四位和第五位不用比較,因爲第一輪已經確定第五位爲最小值),最終調整結果爲
35 99 76 18 12。
同樣邏輯進行第三輪比較,最終調整結果爲 99 76 35 18 12。
第四輪比較結果爲 99 76 35 18 12,即完成整個排序。

編碼實現

廢物不多說,直接上代碼

public class SortHelper
    {
        public static T[] MP_Sort<T>(T[] array) where T : IComparable
        {
            for (int i = 0; i < array.Length - 1; i++)    //外層循環需要n-1次
            {
                for (int j = 0; j < array.Length - 1 - i; j++)
                {
                    if (array[j].CompareTo(array[j + 1]) < 0) //如果array[j]比array[j+1]小,那麼需要互換位置
                    {
                        T temp = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = temp;
                    }
                }
            }
            return array;
        }
    }

調用執行結果如下:
在這裏插入圖片描述

總結分析

冒泡排序的核心部分是雙重嵌套循環,優點是算法思路清晰較爲簡單,只需十行左右代碼,適合初學者,缺點也同樣明顯,時間複雜度爲O(N2),效率較低。下一篇將爲大家帶來更常用且效率更高的快速排序算法。
博客新人~如有問題或錯誤,還望大家在評論中斧正

下一篇: 排序算法——快速排序.net實現.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章