白話經典演算法系列之中的乙個 氣泡排序的三種實現

2021-09-06 22:12:42 字數 774 閱讀 8311

氣泡排序是很easy理解和實現,,以從小到大排序舉例:

設陣列長度為n。

1.比較相鄰的前後二個資料,假設前面資料大於後面的資料,就將二個資料交換。

2.這樣對陣列的第0個資料到n-1個資料進行一次遍歷後,最大的乙個資料就「沉」到陣列第n-1個位置。

3.n=n-1,假設n不為0就反覆前面二步,否則排序完畢。

依照定義非常easy寫出**:

//氣泡排序1

void bubblesort1(int a, int n)

以下對其進行優化,設定乙個標誌,假設這一趟發生了交換,則為true,否則為false。明顯假設有一趟沒有發生交換,說明排序已經完畢。

//氣泡排序2

void bubblesort2(int a, int n)

k--;

}}

再做進一步的優化。假設有100個數的陣列,僅前面10個無序,後面90個都已排好序且都大於前面10個數字,那麼在第一趟遍歷後,最後發生交換的位置必然小於10,且這個位置之後的資料必然已經有序了,記錄下這位置,第二次僅僅要從陣列頭部遍歷到這個位置就能夠了。

//氣泡排序3

void bubblesort3(int a, int n)

}}

氣泡排序畢竟是一種效率低下的排序方法,在資料規模非常小時,能夠採用。資料規模比較大時,最好用其他排序方法。

白話經典演算法系列之中的乙個 氣泡排序的三種實現

氣泡排序是很easy理解和實現,以從小到大排序舉例 設陣列長度為n。1 比較相鄰的前後二個資料,假設前面資料大於後面的資料,就將二個資料交換。2 這樣對陣列的第0個資料到n 1個資料進行一次遍歷後,最大的乙個資料就 沉 到陣列第n 1個位置。3 n n 1,假設n不為0就反覆前面二步,否則排序完畢。...

白話經典演算法系列之中的乙個 氣泡排序的三種實現

氣泡排序是很easy理解和實現,以從小到大排序舉例 設陣列長度為n。1 比較相鄰的前後二個資料,假設前面資料大於後面的資料,就將二個資料交換。2 這樣對陣列的第0個資料到n 1個資料進行一次遍歷後,最大的乙個資料就 沉 到陣列第n 1個位置。3 n n 1,假設n不為0就反覆前面二步,否則排序完畢。...

白話經典演算法系列筆記一氣泡排序

一直以來都想好好補補演算法的東西,正好看到it面試論壇中的白話經典演算法系列,覺得將以前的一些演算法再次熟悉下似乎不錯。所以就從它開始把。我實現及注釋 include using namespace std void swap int a,int b 基礎版氣泡排序 void bubblesort1...