C ++简介:排序代码

时间:2013-07-25 20:20:57

标签: c++

我正在学习今天的期末考试。我的问题是,do-while(swap)语句在这里做了什么?默认情况下交换设置为“true”吗?

我对这段代码的理解是,它对每次排序都至少迭代一次。内部for循环包含关键代码并执行传递中的所有交换。例如,将array [count]复制到temp中,将array [count + 1]复制到array [count]中,将array [count]复制到array [count + 1]中。如果交换了两个元素,则将bool swap设置为true。外部循环不断迭代,直到找到交换标志为false。

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);
 }

3 个答案:

答案 0 :(得分:2)

Swap用于检查算法是否仍在排序。如果swap为false,则表示数组已经排序,算法可以完成。

默认情况下(在do-while循环的每次迭代开始时)swap设置为false,只有在进行交换时它才会变为true(这意味着数组元素不是按顺序排列。

答案 1 :(得分:1)

Swap变量用于确定算法的结束。如果数组已排序,则不会发生交换,swap变量将为false,因此排序结束。

swap变量的默认值未定义,但无关紧要,因为在从beggining处理数组之前,在每次迭代中将其指定为false

答案 2 :(得分:0)

while-do用于执行for循环,直到不应交换数组中的元素。如果for循环期间没有发生交换,则排序所有元素。但是,如果在执行内部循环期间交换了两个元素,则再次扫描该数组以检查结果数组是否已排序。