基本氣泡排序與演算法改進

2021-08-20 06:39:51 字數 1173 閱讀 2480

氣泡排序基本思想,相鄰兩數一次比較,按照要求順序交換。

//*array,待排陣列;n,陣列大小

int main()

; int i;

printf("待排序陣列:\n");

for(i=0;i<8;i++)

printf("%d ",*(array+i));

bubblesort(array,8);

printf("\n氣泡排序後的陣列為:\n");

for(i=0;i<8;i++)

printf("%d ",*(array+i));

}//基本冒泡演算法

void bubblesort(int *array,int n)

} /*通過分析我們可以知道在每一趟冒泡比較之後,若發現從某個位置r開始,

不再進行記錄交換,就說明array[r+1]到array[n-1]已經排好序,

因此下一趟比較只要進行到位置r就行。若某一趟掃瞄中沒有記錄交換,

這說明所有元素都已有序,演算法可以結束,而不用進行n-1次掃瞄。

冒泡演算法改進,用變數m記錄資料最後一次交換位置記錄資料最後一次交換位置*/

void bubblesort(int *array,int n)

} bound=m; }}

/*以上都是單向排序,即大樹均往下沉,經過一次比較可以

把最大數的記錄送到最後的位置。其實我們可以在使大數往下

的同時讓小數往上公升,這樣一次掃瞄就可以將最大的和最小的

記錄放到最終位置上,這就是雙向氣泡排序思想;

演算法改進,雙向排序,大數往下,小數往上*/

void bubblesort(int *array,int n)

} if(max==0) //本次掃瞄沒有記錄交換,掃瞄結束

break;

boundmax=max;

for(i=boundmax-1;i>boundmin;i--) //小數往上公升

}if(min==0)

break;

boundmin=min;

}}

排序演算法 氣泡排序(改進)

假如我們運氣好,用了1輪就已經將整個序列排序好了,整個數列已然是有序的了。可是我們的排序演算法仍然 兢兢業業 地繼續執行第2輪 第3輪 直至n 1輪,這就很沒必要。也就是說如果序列已經有序,每一輪排序還是會繼續比較相鄰的元素,這就相當於做了一些沒用的操作。這種情況下,如果我們能判斷出數列已經有序,並...

氣泡排序與改進

這個是參考大部分博主的,我想自己記下來 1.氣泡排序 顧名思義就是像吐泡泡一樣,把最大 最小的放著最左端或者最右端。我們可以看到,一共比較了21次。而且出現了乙個問題從第二次迴圈開始到結束,排序的順便其實是都沒有變化的。也就是說我們做了很多無用功。那麼我們就可以提出改進來優化氣泡排序。2.初步優化 ...

氣泡排序的演算法分析與改進

交換排序的基本思想是 兩兩比較待排序記錄的關鍵字,發現兩個記錄的次序相反時即進行交換,直到沒有反序的記錄為止。應用交換排序基本思想的主要排序方法有 氣泡排序和快速排序。氣泡排序 1 排序方法 將被排序的記錄陣列r 1.n 垂直排列,每個記錄r i 看作是重量為r i key的氣泡。根據輕氣泡不能在重...