[ex1:]

假設我們這樣寫:

void bubble_sort(apvector &array)
{
int i, j, flag = 1; // set flag to 1 to begin initial pass 將 flag 設為 1 開始第一圈
int temp; // 暫存於 temp
int arrayLength = array.length( );
for(i = 1; (i <= arrayLength) && flag; i++)
{
flag = 0; // flag 預設為 0
for (j=0; j < (arrayLength -1); j++)
{
if (array[j+1] > array[j]) // 由大而小排列, 要小而大就改成 "<"
{
temp = array[j]; // 條件成立,互換位置
array[j] = array[j+1];
array[j+1] = temp;
flag = 1; // flag 設成 1, 表示有互換發生
}
}
}
return;
}

這個迴圈會由頭到尾連續的兩個數字來比較大小,條件對了就互換,比到了尾端再回到頭開始比對與互換,有互換時flag就設成1,比到什麼時候呢?就比到互換的情形不再發生了,那就是完成整理了,也就是 flag=0 的時候,所以flag是在指示"還需要繼續回圈比較下去嗎?"的一個訊號.

arrow
arrow
    全站熱搜

    deskwoodss 發表在 痞客邦 留言(0) 人氣()