Проблема с сортировкой
Нужно сортировать список(по убыванию) по значению value (функция Sort), уже несколько дней пытаюсь сделать, все никак не выходит, при подаче значений 1, 2, 3, 4, 5. Получается: 3, 4, 2, 1, 1. Если при сортировке уменьшит до Size - 1(4, в 4 раза меньше прошлого), то ответ будет: 3, 4, 2, 1, 5. Подскажите в чем может быть дело, думаю, быть может, неверно возвращаюсь в начало списка. Можете свой метод предложить, если мой слишком замудренный.
void Students::Sort() {
Node* current = this->head; // 1
Node* next = current->pNext; // 2
Node* link = this->head; // 1 // Играет роль предыдущего
bool check = false;
int sum = 0;
int num = 1;
for (int i = 0; i < (Size - 1) * (Size - 1); i++) { // Используя только Size - 1, будет 2 вариант ответа
if (sum > 1) {
link = link->pNext;
}
if (current->volume < next->volume) { // 1, 3, 5, ... разы перестановки(нечетные)
current->pNext = next->pNext;
next->pNext = current;
if (sum < 1) {
this->head = next; //
link = this->head;
}
else {
link->pNext = next;
}
check = true;
}
if (next->volume < current->volume && check == false) { // 2, 4 ... четные разы
next->pNext = current->pNext;
current->pNext = next;
link->pNext = current;
}
check = false;
current = current->pNext;
next = next->pNext;
sum++;
if (current->pNext == nullptr || next->pNext == nullptr) {
sum = 0;
current = this->head;
next = current->pNext;
}
}
}