C++简介:排序代码

Intro to C++: Sorting code

本文关键字:代码 排序 简介 C++      更新时间:2023-10-16

我正在为今天安排的期末考试复习。我的问题是,do-white(swap)语句在这里做什么?swap是否默认设置为"true"?

我对这段代码的理解是,它在每次排序过程中至少迭代一次。内部for循环携带关键代码,并在过程中进行所有交换。例如,将array[count]复制到temp中,将array[count+1]复制到array[count]中,并将array[cunt]复制到数组[count+1]中。如果交换了这两个元素,则布尔交换将设置为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);
 }

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

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

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

swap变量的默认值是未定义的,但这并不重要,因为在从开始处理数组之前,您在每次迭代中将其赋值为false

而do用于执行for循环,直到数组中没有元素被交换为止。如果在for循环期间没有发生交换,则会对所有元素进行排序。但是,如果在执行内部循环期间交换了两个元素,则会再次扫描数组以检查结果数组是否排序。