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
- Je ne sais pas comment calculer le temps de l'algorithme pour cela, je veux dire O (n)
- 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();
}
}
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
Ceci est une question pour [CodeReview] (http://codereview.stackexchange.com/). –
@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 ... –