¿Me pueden explicar como funciona este código en java - es de el método de ordenación por insert sort - aplicado a listas?

El problema es que no tengo muy claro como es el funcionamiento y tengo un parcial de describir como es su funcionamiento, si me podrían ayudar se los agradecería mucho, este tema es de la materia estructura de datos

public void insertSort() {
nodo q = this.cab.getSig();
nodo p = null, aux = null;
while (q != null) {
p = q.getAnt();
while (p != null && p.getId() > q.getId()) {
p = p.getAnt();
}
if(p!= q.getAnt()){
aux = q.getSig();
q.getAnt().setSig(q.getSig());
if(q.getSig()!= null){
q.getSig().setAnt(q.getAnt());
}
if(p!=null){
q.setSig(p.getSig());
q.setAnt(p);
if(p.getSig()!=null){
p.getSig().setAnt(q);
}
p.setSig(q);
}else{
q.setSig(this.cab);
q.setAnt(null);
this.cab.setAnt(q);
this.cab = (persona)q;
}
q = aux;
}else{
q = q.getSig();
}
}
}
}

Añade tu respuesta

Haz clic para o