假設數據 由小到大 排列
所謂“冒泡”指的就是每層循環保證最小的泡泡上浮到水面
考慮數列[3 2 5 1 6]
第一次循環 (從水底開始)
① 3 2 5 1 6 --> 3 2 5 1 6
② 3 2 5 1 6 --> 3 2 1 5 6
③ 3 2 1 5 6 --> 3 1 2 5 6
④ 3 1 2 5 6 --> 1 3 2 5 6
第一次循環完畢之後保證了最小的泡泡(元素)上浮到水面(最頂端)
第二次循環 (從水底開始)
1 3 2 5 6 --> 1 3 2 5 6
1 3 2 5 6 --> 1 3 2 5 6
1 3 2 5 6 --> 1 2 3 5 6
第二次循環,保證餘下泡泡中次小的上浮到最小泡泡的後面
注意,第二次比第一次少比較一次,因爲第一次已經保證開頭的是最小的
第三次循環
。。。
template < class Key >
void BubbleSort ( Key L[ ] , int n ){
int i , j ;
for ( i = 1 ; i < n ; i + + ){
for ( j = n ; j > i ; j - - )
if ( L[j] < L[j-1] ) Swap( L[j] , L[j-1] ) ;
}
return ;
}