Я пытаюсь использовать алгоритм сортировки выбора в версии двусвязного списка, который я написал сам. По этому вопросу мы можем предположить, что в другом месте, кроме кода, который я публикую, нет ошибок (по крайней мере, нет ни одного, имеющего отношение к вопросу). Я сделал много испытаний.
вот мой метод:
public void selectionSort(){
ListItem front = head;
ListItem current;
T currentLowest;
T potentialLowest;
int lowestIndex = 0;
for (int a = 0; a<count-1; a++){
System.out.println("a: "+a);
currentLowest = (T) front.content;
front = front.next;
current = front.next;
for(int i = a+1; i<count; i++){
System.out.println("i: "+i);
**(29)** potentialLowest = (T) current.content;
if (potentialLowest.compareTo(currentLowest)==-1)
{
currentLowest = (T) current.content;
lowestIndex = i;
}
if(current.next == null)break;
current = current.next;
}
System.out.println("swapped"+a+","+lowestIndex);
swap(a, lowestIndex);
}
}
Это сортировка списка из 100 целых чисел. Вот последний бит вывода, прежде чем я получу нулевой указатель в строке 29 (помечено).
swapped95,97
а: 96
я: 97
я: 98
swapped96,97
а: 97
я: 98
swapped97,97
а: 98
я: 99
(нулевой указатель)
У меня раньше это работало, но оно было ужасно оптимизировано. После внесения некоторых изменений я застрял с этим. Есть идеи?
Спасибо за ваше время.