Ver Mensaje Individual
  #4 (permalink)  
Antiguo 03/10/2011, 05:14
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Ordenar ArrayList de enteros

Prueba así. Este método es llamado ordenamiento por selección (el que has intentado hacer) y es muy ineficiente.

Puedes intentar crear el algoritmo de ordenamiento por inserción que a lo mejor te viene mejor.

Código Java:
Ver original
  1. public static ArrayList<Integer> ordenar(ArrayList<Integer> vector){
  2. //Hallamos el menor de todo el arreglo
  3.        
  4.         ArrayList <Integer> Resultado= new ArrayList<Integer>(vector);
  5.        
  6.         int indice,menor;
  7.         int aux;
  8.        
  9.         for(int i=0;i<Resultado.size();i++){      
  10.        
  11.         menor = Resultado.get(i);
  12.         indice = i;
  13.         aux = 0;
  14.        
  15.         for(int j=i+1;j<Resultado.size();j++){
  16.             aux = Resultado.get(j);
  17.             indice = aux < menor ? j : indice;
  18.             menor = aux < menor ? aux : menor;
  19.         }
  20.        
  21.        
  22.         Resultado.set(indice,Resultado.get(i));
  23.         Resultado.set(i,menor);
  24.        
  25. }
  26. return Resultado;
  27.  
  28. }

EDITO: Un ejemplo de ordenación por inserción

Código Java:
Ver original
  1. public static ArrayList<Integer> ordenarInsertando(ArrayList<Integer> vector){
  2.  
  3.        
  4.         ArrayList <Integer> Resultado= new ArrayList<Integer>();
  5.        
  6.        
  7.  
  8.       int valor;  
  9.       boolean insertado_antes =false;
  10.       Resultado.add(vector.get(0));
  11.      
  12.       for (int i=1;i<vector.size();i++) {
  13.           insertado_antes = false;
  14.           valor = vector.get(i);
  15.           int length = Resultado.size();
  16.           for(int j=0;j<length;j++){              
  17.               if (Resultado.get(j)>=valor){
  18.                   Resultado.add(j, valor);
  19.                   insertado_antes = true;
  20.               }
  21.           }        
  22.           if (!insertado_antes)
  23.            Resultado.add(valor);
  24.       }
  25.    
  26. return Resultado;
  27.  
  28. }

Última edición por alexg88; 03/10/2011 a las 06:02