void Ordenar(){
}
y cuando ejecute este metodo se ordene la lista utilizando el metodo de ordenamiento MergeSort alguien me puede ayudar o darme una pista de como intercambiar los nodos gracias..!!
Aqui esta el Codigo:
Clase Nodo.java
Código PHP:
   public class Nodo <T>{
    private T obj;
    private Nodo siguiente;
    private Nodo anterior;
 
    public Nodo(T o){
        obj=o;
        siguiente=null;
    }
 
    public Nodo() {
        obj=null;
        siguiente=null;
    }
 
    public Nodo(T o,Nodo s) {
        obj=o;
        siguiente=s;
    }
 
    public T getObjeto(){
        return obj;
    }
 
    public Nodo getSiguiente(){
        return siguiente;
    }
 
    public void setSiguiente(Nodo s){
        siguiente=s;
    }
 
 
    public Nodo getAnterior(){
        return anterior;
    }
 
    public void setAnterior(Nodo a){
        anterior=a;
    }
 
 
} 
    Clase ListaOrdenada.java
Código PHP:
   public class ListaOrdenada <T>{
    private Nodo tope,inicio;
    private int tamano;
 
    public ListaOrdenada(T o) {
        Nodo nodo=new Nodo(o, tope);
        nodo.setAnterior(null);
        tope=nodo;
        inicio=tope;
        tamano=1;
        //System.out.println("Anterior: "+nodo.getAnterior()+" Nodo: "+nodo+" Siguiente: "+nodo.getSiguiente());
    }
 
    void insertarFinal(T o){
        Nodo aux=new Nodo(o);
        aux.setAnterior(tope);
        tope.setSiguiente(aux);
        tope=aux;
        tamano++;
        //System.out.println("Anterior: "+aux.getAnterior()+" Nodo: "+aux+" Siguiente: "+aux.getSiguiente());
    }
 
    void insertar(T o,int pos){
        if (pos <= getTamano() + 1)    {
            Nodo aux = new Nodo (o);
            if (pos == 1){
                aux.setSiguiente(inicio);
                if (inicio!=null)
                    inicio.setAnterior(aux);
                inicio = aux;
            } else
                if (pos == getTamano() + 1)    {
                    Nodo recorrer = inicio;//nuevo nodo para el objeto en la ultima posicicion
                    while (recorrer.getSiguiente() != null) {
                        recorrer = recorrer.getSiguiente();
                    }
                    
                    recorrer.setSiguiente(aux);
                    aux.setAnterior(recorrer);
                    aux.setSiguiente(null);
                    tope=aux;
                } else {
                    Nodo recorrer = inicio;//para enontrar el nodo de la posicionespecificada
                    for (int f = 1 ; f <= pos - 2 ; f++)
                        recorrer = recorrer.getSiguiente();
                    Nodo siguiente = recorrer.getSiguiente();
                    recorrer.setSiguiente(aux);
                    aux.setAnterior(recorrer);
                    aux.setSiguiente(siguiente);
                    siguiente.setAnterior(aux);
                }
            tamano++;
        }
    }
 
    void eliminarUltimo(){
        tope=tope.getAnterior();
        //tope.setSiguiente(null);
        tamano--;
    }
 
    void eliminar(int n){
        if(-1!=buscar(n)){
            if (n <= getTamano ())    {
                if (n == 1) {
                    inicio = inicio.getSiguiente();
                } else {
                    Nodo aux;
                    aux = inicio;
                    for (int i = 1 ; i <= n - 2 ; i++)
                        aux = aux.getSiguiente();
                    Nodo prox = aux.getSiguiente();
                    aux.setSiguiente(prox.getSiguiente());
                }
                tamano--;
            }
        }
        else
            System.out.println("ERROR: El numero no esta en el Rango de la Lista");
    }
 
    int buscar(int n){
        if(n>0 && n<tamano+1)
            return n;
        return -1;
    }
 
    boolean vacia(){
        return (inicio==null);
    }
 
    Vector mostrar(){
        Vector<T> vect=new Vector<T>();
        if(tamano!=0) {
            Nodo aux = inicio;
            for(int i = 0; i < this.tamano; i++) {
                vect.add((T) aux.getObjeto());
                //System.out.println(aux.getObjeto());
                System.out.println(" pos:"+(i+1)+" Anterior: "+aux.getAnterior()+" Nodo: "+aux+" Siguiente: "+aux.getSiguiente());
                aux=aux.getSiguiente();
            }
            return vect;
        }
        else
            System.out.println("La Lista Esta Vacia");
        return null;
    }
 
    int getTamano(){
        return tamano;
    }
} 
    Clase Main
Código PHP:
       public static void main(String[] args) {
        // TODO code application logic here
        ListaOrdenada<Integer> lista=new ListaOrdenada<Integer>(6);
        lista.insertar(1, 2);
        lista.insertarFinal(4);
        lista.insertar(3, 1);
        lista.insertar(1, 10);
        
        lista.ordenar();
        System.out.print(lista.mostrar());
 
    } 
     
 
 metodo ordenar para la clase lista
 metodo ordenar para la clase lista 

