2011-09-17 3 views
1

Voici ma mise en oeuvre du tri d'insertion en java pour une liste doublement chaînée. J'ai vérifié de nombreuses valeurs et cela me donne une sortie correcte. Ma question est:Ma mise en oeuvre du tri d'insertion

  1. Je ne sais pas comment calculer le temps de l'algorithme pour cela, je veux dire O (n)
  2. peut-il être optimisé? Quelqu'un peut-il pointer vers un code qui est plus optimisé?

Nota: Le code utilise ganglion sentinelle pour que les points au début de la liste chaînée-à-dire sentinelle node.next à des points de départ noeud de liste, et point de node.PREV sentinelle au dernier noeud de la liste des points liés et la tête au noeud sentinelle .

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

Je suis nouveau à la liste chaînée et je voulais une opinion honnête de quelqu'un. Ce code fonctionne. Je voulais juste savoir si cela peut être optimisé. – sreeprasad

+1

Ceci est une question pour [CodeReview] (http://codereview.stackexchange.com/). –

+1

@LeeAllan Vous savez que cette question a quatre ans, j'espère? Je pense que vous êtes un peu en retard à recommander le code Review ... –

Répondre

0

c'est O (N^2), car 1 boucle imbriquée. et tous les 2 boucles parcourent toute la liste