2013-07-25 59 views
0

我正在學習期末考試。我的問題是,do-while(交換)語句在這裏做什麼?默認情況下swap是否設置爲「true」?C++簡介:排序代碼

我對這段代碼的理解是它對每一次遍歷都至少迭代一次。內部for循環攜帶關鍵代碼並執行所有交換。例如,將array [count]複製到temp中,將array [count + 1]複製到array [count]中,並將array [count]複製到array [count + 1]中。如果兩個元素交換,則bool交換設置爲true。外循環不斷迭代,直到找到交換標誌爲假。

void sortArray(int array[], int size) 
{ 
    int size; 
    bool swap; 

do 
{ 
    swap = false; 
    for(int count = 0; count < (size -1); count++) 
    { 
     if(array[count] > array[count+1]) 
     { 
     temp = array[count]; 
     array[count] = array[count+1]; 
     array[count+1] = temp; 
     swap = true; 
     } 
    } 
    }while(swap); 
} 
+0

爲什麼它最初是什麼'swap'?接下來的聲明將其設置爲false。 – chris

回答

2

Swap用於檢查算法是否仍在排序。如果swap爲false,則表示數組已經排序並且算法可以完成。

默認情況下(在do-while循環的每次迭代的開始)swap設置爲false,它的變化true只有當交換被做(這意味着數組元素以正確的順序不會)。

1

Swap變量用於確定算法的結束。如果對數組進行排序,則不會發生交換,並且swap變量將爲false,因此排序結束。

默認值的 swap

變量未定義,但因爲你從beggining

+0

用於指定'swap'默認值的+1 – exexzian

0

而待辦事項是用來執行用於循環,直到陣列中沒有元素處理陣列之前分配給它在每次迭代中爲假它不事關,應該交換。如果在for循環中沒有出現交換,那麼比所有元素都排序。但是,如果在執行內部循環期間交換了兩個元素,則會再次掃描該數組以檢查結果數組是否已排序。