Я пытаюсь сортировать пузырьки для моего связанного списка, это не работает с первого раза, но если я вызову функцию дважды, она сортируется хорошо, для пример, если список: 9 8 7 6 5 4 3 2 1, сортировка возвращается 4 3 2 1 5 6 7 8 9! В чем тут ошибка?Сортировка пузырьков не работает с первого раза в связанном списке
void sort() {
if(Head == NULL)
cout << "Sorry but your list is empty! \n";
else {
int i,j,temp,k = count();
node *current,*nextNode;
for(i=0; i<k-1; i++,k--) {
current = Head;
nextNode = current->Next;
for(j = 1; j<k; j++) {
if(current->item > nextNode->item){
temp = current->item;
current->item = nextNode->item;
nextNode->item = temp;
}
current = current->Next;
nextNode = nextNode->Next;
}
}
cout << "Sorting Succeeded!\n";
}
}
Я беру это из кода подкачки, это не об обмене узлами в связанном списке, а их содержащихся значениях. Я объясняю это только потому, что большинство структур данных и алгоритмов не используют связанный список для академических наук bubblesort, если вы специально не * предположили, что должны менять прямые значения, а вместо этого заменяете позиции в списке содержащихся узлов (задача, которая значительно отличается от сделанного здесь). – WhozCraig