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個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放...