Ce tri d'insertion appartient à une liste à double liaison. Cela ne semble pas impressionner quoi que ce soit. Désolé si c'est désordonné. Je suis assez nouveau pour poster des choses. Je l'ai débogué en mettant dans sysout. Je crois qu'il y a un problème avec l'échange que j'ai utilisé sysout & J'ai remarqué que c'est là que le problème se produisait. Toute aide serait grandement appréciée. J'ai également vérifié ma classe d'application qui semble bien.Inverser le tri par insertion ne fonctionne pas dans une liste à double liaison
public boolean insertionSort()
{
if (getFirst().next != null)
{
return false;
}
Link current = getFirst().next;
Link current2 = current;
while(current != null){
current2 = current;
while(current2.prev != null){
int tempID = Integer.valueOf(current2.Data.getID());
int temp2ID = Integer.valueOf(current2.prev.Data.getID());
if(tempID < temp2ID)
{
swap(current2, current.prev);
}
current2 = current2.prev;
}
current = current.next;
}
return true;
}
public void swap(Link x, Link y)
{
Link previousNode1 = x.prev;
Link nextNode1 = x.next;
Link previousNode2 = y.prev;
Link nextNode2 = y.next;
if (x.next == y || y.next == x)
{
previousNode1.next = y;
y.prev = (previousNode1);
nextNode2.next = (x);
x.next = (nextNode2);
x.prev = (y);
y.next = (x);
}
else
{
y.prev = (previousNode1);
y.next = (nextNode1);
nextNode1.prev = (y);
previousNode1.next = (y);
x.prev = (previousNode2);
x.next = (nextNode2);
nextNode2.prev = (x);
previousNode2.next = (x);
}
} // end swap