常見排序算法的實現(四)-冒泡排序
冒泡排序算法的思想:很簡單,每次遍歷完序列都把最大(小)的元素放在最前面,然后再對剩下的序列從父前面的一個過程,每次遍歷完之后待排序序列就少一個元素,當待排序序列減小為只有一個元素的時候排序就結束了.因此,復雜度在最壞的情況下是O(N ^ 2).
void
?Swap(
int
?
*
a,?
int
?
*
b)
{
????
int
?temp;
????temp?
=
?
*
a;
????
*
a???
=
?
*
b;
????
*
b???
=
?temp;
}
//
?冒泡排序
void
?BubbleSort(
int
?array[],?
int
?length)
{
????
//
?記錄一次遍歷中是否有元素的交換
????
bool
?exchange;
????
for
?(
int
?i?
=
?
0
;?i?
<
?length;?
++
i)
????
{
????????exchange?
=
?
false
;
????????
for
?(
int
?j?
=
?i?
+
?
1
;?j?
<
?length;?
++
j)
????????
{
????????????
if
?(array[j]?
<
?array[i])
????????????
{
????????????????exchange?
=
?
true
;
????????????????Swap(
&
array[j],?
&
array[i]);
????????????}
????????}
????????
//
?如果這次遍歷沒有元素的交換,那么排序結束
????????
if
?(
false
?
==
?exchange)
????????????
break
;
????}
}
posted on 2006-07-04 00:36 那誰 閱讀(1209) 評論(2) 編輯 收藏 引用 所屬分類: 算法與數據結構

