Bubble Сортировка строки в массиве

Я пытаюсь выполнить пузырьковую сортировку свойства 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++;
}
}

0

Решение

Это выглядит как lastName это массив символов.

Вы не можете назначать целые массивы друг другу; вам нужно использовать strcpy() (#включают <cstring>) копировать одно в другое. Кроме того, используя < с символьными массивами вызовет сравнение адресов памяти первых элементов в каждом массиве, а не всей строки символов; использование strcmp для этого (который возвращает < 0 если первый параметр лексикографически < второй параметр).

Обратите внимание, что вы можете (и, вероятно, должны) использовать std::string вместо (#include <string>), которая автоматически обеспечит прозрачное копирование, сравнение и динамический рост.

2

Другие решения

Других решений пока нет …