1. 程式人生 > >氣泡排序 遞迴演算法

氣泡排序 遞迴演算法

1,氣泡排序

以前在學校的時候看過氣泡排序,看的時候挺明白的,但是自己寫的時候就寫不出來,在網上搜索了一下,發現網上的氣泡排序演算法幾乎都不符合氣泡排序的原理,雖然也能實現,但是不正宗。

氣泡排序從字面意思理解:應該是這樣的,按照順序從最下面一個(陣列索引最大)上升到第一個:

所以最正宗的程式碼是這樣的:

複製程式碼
  //氣泡排序
        public void BubbleSort(double[] data)
        {
            for (int i = 0; i < data.Length - 1; i++)
            {
                for
(int j = data.Length - 1; j >i; j--) { if (data[j] > data[j - 1]) { data[j] = data[j] + data[j - 1]; data[j - 1] = data[j] - data[j - 1]; data[j] = data[j] - data[j - 1
]; } } } }
複製程式碼

當然如果你喜歡最下底下的元素對應最小索引,那麼程式碼是這樣的:

複製程式碼
 //氣泡排序
        public void BubbleSort(double[] data)
        {
            for (int i = 0; i < data.Length-1; i++)
            {
                for (int j = 0; j < data.Length-1-i; j++)
                {
                    
if(data[j]>data[j+1]) { data[j] = data[j] + data[j + 1]; data[j + 1] = data[j] - data[j + 1]; data[j] = data[j] - data[j + 1]; } } } }
複製程式碼

至於下面這段程式碼就是網上大量存在的了,我覺得是最差的一種,雖然也能實現排序,但是它邏輯混亂,效率低,執行次數明顯比上面兩種多