Это моя реализация сортировки вставками в java для двусвязного списка. Я проверил много значений, и это дает мне правильный вывод. Мой вопрос:
- Я не знаю, как рассчитать время алгоритма для этого, я имею в виду O (n)
- Можно ли это оптимизировать? Может ли кто-нибудь указать код, который более оптимизирован?
Примечание. В коде используется дозорный узел, который указывает на начало связанного списка, т. е. дозорный узел. Следующий указывает на начальный узел связанного списка и дозорный узел. PREV указывает на последний узел связанного списка, а заголовок указывает на дозорный узел.
public void sortInsertionAsce(){
DListNode marker,aheadOfCurrent;;
DListNode current = head.getNext();
aheadOfCurrent = current.getNext();
marker=current;
while(aheadOfCurrent.getNext()!=current){
if(marker.getItem()>aheadOfCurrent.getItem()){
swap(aheadOfCurrent,marker);
marker=aheadOfCurrent;
while(aheadOfCurrent.getPrev()!=current){
aheadOfCurrent=aheadOfCurrent.getPrev();
if(aheadOfCurrent.getPrev().getItem()>aheadOfCurrent.getItem()){
swap(aheadOfCurrent.getPrev(),aheadOfCurrent);
}
}
aheadOfCurrent=marker;
}
marker=aheadOfCurrent;
aheadOfCurrent=aheadOfCurrent.getNext();
}
}