Я реализую свой собственный связанный список на Java. Класс node просто имеет поле строки, называемое «имя», и узел, называемый «ссылка». Прямо сейчас у меня есть класс тестового драйвера, который только вставляет несколько имен последовательно. Теперь я пытаюсь написать метод сортировки, чтобы упорядочить узлы в алфавитном порядке, но у меня проблемы с ним. Я нашел этот псевдокод пузырьков из чужого сообщения и попытался его реализовать, но он не полностью сортирует записи. Я не совсем уверен, почему. Любые предложения приветствуются!Ручная сортировка связанного списка в Java (лексически)
private void sort()
{
//Enter loop only if there are elements in list
boolean swapped = (head != null);
// Only continue loop if a swap is made
while (swapped)
{
swapped = false;
// Maintain pointers
Node curr = head;
Node next = curr.link;
Node prev = null;
// Cannot swap last element with its next
while (next != null)
{
// swap if items in wrong order
if (curr.name.compareTo(next.name) < 0)
{
// notify loop to do one more pass
swapped = true;
// swap elements (swapping head in special case
if (curr == head)
{
head = next;
Node temp = next.link;
next.link = curr;
curr.link = temp;
curr = head;
}
else
{
prev.link = curr.link;
curr.link = next.link;
next.link = curr;
curr = next;
}
}
// move to next element
prev = curr;
curr = curr.link;
next = curr.link;
}
}
}
Для чего это стоит, я думаю, что '<' в сравнении сделает ваш вид в порядке DESCENDING. –
Можете ли вы привести пример «не полностью сортировать записи»? - ваш код пузырьков выглядит нормально –