Tri d'une liste liée dans Java

J'ai écrit une bulle algorithme de tri pour trier une liste liée. Je suis un Java débutant et essayer d'apprendre les structures de données. Je ne sais pas pourquoi mon second élément n'est pas triés correctement.

MODIFIER

class SListNode {
  Object item;
  SListNode next;


  SListNode(Object obj) {
    item = obj;
    next = null;
  }


  SListNode(Object obj, SListNode next) {
    item = obj;
    this.next = next;
  }

}
public class SList {

    private SListNode head;
    private SListNode temp;

    public void sortList() {
        SListNode node = head,i,j;
        head = node;
        i = node;
        j = node.next;
        while(i.next != null) {
            while(j.next != null) {
                if((Integer)i.item < (Integer)j.item) {
                    temp = i.next;
                    i.next = j.next;
                    j.next = temp;
                 }
                j = j.next;
            }
            i = i.next;
        }
    }
}

C'est la sortie, je suis

List after construction: [  3  6  9  4  12  15  ]
After sorting: [  3  4  9  12  6  15  ]

D'ailleurs je sais le pire des cas d'un tri à bulles est O(n2). Puis-je utiliser mergesort sur une liste, pour avoir un meilleur temps de la complexité?

Merci!

Qu'est-ce que SListNode? Pensez à publier de mise en œuvre.
Sans répondre directement à, la voie à étudier serait de Système..println() de votre liste après chaque swap et après chaque boucle externe pour voir ce qui se passe.

OriginalL'auteur user525146 | 2012-01-24