我正在准备今天安排的期末考试。我的问题是,do-while(swap) 语句在这里做什么?交换是否默认设置为“true”?
我对这段代码的理解是,每次排序都至少迭代一次。内部 for 循环携带关键代码并在传递中执行所有交换。例如,array[count] 被复制到 temp,array[count+1] 被复制到 array[count],array[count] 被复制到 array[count+1]。如果交换了两个元素,则布尔交换设置为 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);
}