冒泡 对数组中的字符串进行排序

Bubble Sorting a string in an Array

本文关键字:排序 字符串 数组 冒泡      更新时间:2023-10-16

我正在尝试使用气泡排序对数组的 LastName 属性(在结构 StudentRecord 下,因此名称)进行气泡排序。但我在这样做时遇到了麻烦。

收到错误(我正在使用 MinGW 进行编译):

Invalid array assignment

这是我的代码:

void option2 (StudentRecord student[], int n)
{
   int pass = 1;
   bool done = false;
   StudentRecord temp;
   while (!done && pass <= n-1)
   {
      done = true;
      for (int i = n-1; i >= pass; i--)
      {
         if (student[i].lastName < student[i-1].lastName)
         {
            temp.lastName = student[i].lastName;
            student[i].lastName = student[i-1].lastName;
            student[i-1].lastName = temp.lastName;
            done = false;
         }
      }
      pass++;
   }
}

看起来lastName是一个字符数组。

您不能将整个数组分配给彼此;您需要使用strcpy()(#include <cstring>)将一个数组复制到另一个数组。此外,将<与字符数组一起使用将导致比较每个数组中第一个元素的内存地址,而不是整个字符串;为此使用 strcmp(返回 0 IFF<第一个参数按字典顺序><第二个参数)。>

请注意,您可以(并且可能应该)使用 std::string 代替 (#include <string> ),这将自动透明地为您提供复制、比较和动态增长。