我执行插入排序

时间:2011-09-17 17:08:34

标签: java sorting insertion-sort

这是我在java中为双向链表实现的插入排序。我检查了很多值,它给了我正确的输出。我的问题是:

  1. 我不知道如何计算算法时间,我的意思是O(n)
  2. 这可以优化吗?任何人都可以指出更优化的代码吗?
  3. 注意:代码使用Sentinel节点指向链接列表的起始点,即sentinel node.next指向链表和发送节点的起始节点.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();
                }
             } 
    

1 个答案:

答案 0 :(得分:0)

它是O(N ^ 2),因为1个嵌套循环。并且所有2个循环遍历所有列表