Я работаю над алгоритмом сортировки пузырьков для связанного списка. Он перемещает данные, но не совсем правильно сортирует данные. На данный момент я беспокоюсь только о связанных списках целых. Где проблема? Спасибо большое.
void List::linkedListBubbleSort()
{
bool swap = true;
Node * temp = firstNode;
Node * current;
if(firstNode == 0)
{
cout << "List is empty." << endl;
return;
}
else
{
while(swap == true)
{
for(current = firstNode; current != NULL && current->next != NULL; current = current->next)
{
if(current->data > current->next->data)
{
swap = true;
temp->data = current->data;
current->data = current->next->data;
current->next->data = temp->data;
}
else
swap = false;
}
}
Вам не нужно использовать while (swap == true), потому что в какой-то момент, когда if (current-> data> current-> next-> data) вернет false, тогда ваш верхний цикл, в то время как (swap == true) не позволит вам выполнить итерацию далее.
else
{
for(current = firstNode; current != NULL && current->next != NULL; current = current->next)
{
if(current->data > current->next->data)
{
temp->data = current->data;
current->data = current->next->data;
current->next->data = temp->data;
}
}
}