排序演算法之一 氣泡排序 C 版本

2021-09-29 16:39:56 字數 3033 閱讀 3599

1. 初始版本

void

bubblesort_init

(int

* pdata,

int size)

}}

每一輪結束之後,如果這輪中沒有進行一次資料交換,表明陣列已經有序,無需再進行操作。

2. 改進版本

void

bubblesort_advance

(int

* pdata,

int size)}if

(!hasswap)

break

;// 這一輪沒有一次交換,說明已經排好序,無需再比較

}}

如果每輪中,只有前面進行過資料交換,後面沒有。可以以最後交換過資料的位置作為下一次進行檢查的終點。

3. 最終版本

void

bubblesort_final

(int

* pdata,

int size)

}// 這一輪沒有一次交換,說明已經排好序,無需再比較if(

!hasswap)

break

; endidx = lastswapidx;

}}

加上相關的輸出資訊後再進行呼叫。

輔助函式:

void

print

(int

* pdata,

int size)

初始資料為:

int datas[10]

=;

1. 初始版本
void

bubblesort_init_output

(int

* pdata,

int size)

}}

呼叫輸出

round 0

step 0:1

2321

6step 1:1

2321

6step 2:1

2231

6step 3:1

2213

6step 4:1

2213

6round 1

step 0:1

2213

6step 1:1

2213

6step 2:1

2123

6step 3:1

2123

6round 2

step 0:1

2123

6step 1:1

1223

6step 2:1

1223

6round 3

step 0:1

1223

6step 1:1

1223

6round 4

step 0:1

1223

6

2. 改進版本
void

bubblesort_advance_output

(int

* pdata,

int size)

std::cout <<

"step "

<< j <<

":"<< std::endl;

print

(pdata, size);}

// 這一輪沒有一次交換,說明已經排好序,無需再比較if(

!hasswap)

break;}

}

呼叫輸出

round 0

step 0:1

2321

6step 1:1

2321

6step 2:1

2231

6step 3:1

2213

6step 4:1

2213

6round 1

step 0:1

2213

6step 1:1

2213

6step 2:1

2123

6step 3:1

2123

6round 2

step 0:1

2123

6step 1:1

1223

6step 2:1

1223

6round 3

step 0:1

1223

6step 1:1

1223

6

3. 最終版本
void

bubblesort_final_output

(int

* pdata,

int size)

std::cout <<

"step "

<< j <<

":"<< std::endl;

print

(pdata, size);}

// 這一輪沒有一次交換,說明已經排好序,無需 再比較if(

!hasswap)

break

; endidx = lastswapidx;

}}

呼叫輸出

round 0

step 0:1

2321

6step 1:1

2321

6step 2:1

2231

6step 3:1

2213

6step 4:1

2213

6round 1

step 0:1

2213

6step 1:1

2213

6step 2:1

2123

6round 2

step 0:1

2123

6step 1:1

1223

6round 3

step 0:1

1223

6

演算法 排序之一 氣泡排序

如果資料按照一定的順序進行排序,資料處理的效率將顯著的提高。演算法是程式設計的精髓,乙個高效 而合適的演算法能極大的減少時間消耗與空間消耗,提到 合適 是因為沒有哪個演算法可以在所有情況下都表現出色,同樣是排序,在不同資料規模下各種排序演算法有不同的效能表現,選擇合適的解決演算法的才能最大限度地提高...

基本排序演算法 之一 氣泡排序

templatevoid bubblesort t arr,int len 未改進的氣泡排序,最好,最壞以及平均情況下的時間複雜度均為o n 2 排序過程可能在k k n 1 次外迴圈後已經達到有序狀態,但該演算法仍然會繼續比較相鄰元素,直到n 1次外迴圈結束。基於以上考慮,提出改進的氣泡排序演算法...

排序演算法之一 氣泡排序 選擇排序 插入排序

1.氣泡排序 原理 比較兩個相鄰的元素,將值大的元素交換至右端。複雜度 o n n 思路 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放...