Это моя реализация сортировки вставки в Java для двусвязного списка.Я проверил для многих значений, и это дает мне правильный вывод.Мой вопрос:
- Я не знаю, как рассчитать время алгоритма для этого, я имею в виду O (n)
- Можно ли это оптимизировать?Кто-нибудь может указать на код, который является более оптимизированным?
Примечание. Код использует сторожевой узел, который указывает на начало связанного списка, т.е.указывает на последний узел связанного списка и заголовок указывает на сторожевой узел.
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();
}
}