氣泡排序 遞迴演算法
阿新 • • 發佈:2019-01-27
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]; } } } }
至於下面這段程式碼就是網上大量存在的了,我覺得是最差的一種,雖然也能實現排序,但是它邏輯混亂,效率低,執行次數明顯比上面兩種多