Моя реализация вставки сортировки - PullRequest
1 голос
/ 17 сентября 2011

Это моя реализация сортировки вставки в Java для двусвязного списка.Я проверил для многих значений, и это дает мне правильный вывод.Мой вопрос:

  1. Я не знаю, как рассчитать время алгоритма для этого, я имею в виду O (n)
  2. Можно ли это оптимизировать?Кто-нибудь может указать на код, который является более оптимизированным?

Примечание. Код использует сторожевой узел, который указывает на начало связанного списка, т.е.указывает на последний узел связанного списка и заголовок указывает на сторожевой узел.

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();
            }
         } 

1 Ответ

0 голосов
/ 18 сентября 2011

это O (N ^ 2), потому что 1 вложенный цикл.и все 2 цикла повторяются по всему списку

...