Ver Mensaje Individual
  #33 (permalink)  
Antiguo 24/04/2006, 14:09
Avatar de Tipdar
Tipdar
 
Fecha de Ingreso: octubre-2005
Ubicación: Aquí y allá.
Mensajes: 323
Antigüedad: 18 años, 6 meses
Puntos: 7
Tema: Arreglos
Pregunta: ¿Cómo ordenar un arreglo MUY GRANDE de enteros y que no demore demasiado?
Respuesta: Utilizando un ordenamiento rápido ó QuickSort.

Por ejemplo:
Código PHP:
// 

public int[] quicksort(int arreglo[], int inicialint finaliza) {
        
int inferior inicial;
        
int superior finaliza;
        
int posicion inicial;
        
boolean continuar true;

        while (
continuar) {
            
continuar false;
            while ((
arreglo[posicion] <= arreglo[superior])
                    && (
posicion != superior)) {
                
superior--;
            }
            if (
posicion != superior) {
                
int temporal arreglo[posicion];
                
arreglo[posicion] = arreglo[superior];
                
arreglo[superior] = temporal;
                
posicion superior;
                while ((
arreglo[posicion] >= arreglo[inferior])
                        && (
posicion != inferior)) {
                    
inferior++;
                }
                if (
posicion != inferior) {
                    
continuar true;
                    
temporal arreglo[posicion];
                    
arreglo[posicion] = arreglo[inferior];
                    
arreglo[inferior] = temporal;
                    
posicion inferior;
                }
            }
        }
        if ((
posicion 1) > inicial) {
            
quicksort(arregloinicialposicion 1);
        }
        if (
finaliza > (posicion 1)) {
            
quicksort(arregloposicion 1finaliza);
        }
        return 
arreglo;
    } 
Esto sirve para cualquier arreglo, pero se recomienda para los muy grandes. inicial y finaliza son los límites y arreglo, pues el arreglo a ordenar. Esto ordena de menor a mayor.

Se puede hacer también utilizando los métodos de la clase Arrays del SDK... por ejemplo:

Código PHP:
//

Arrays.sort(arreglo); 
donde arreglo puede ser un arreglo de byte, char, double, float, int, long, short, Object...

Hasta la vista!!
__________________
El último TipdaR

Última edición por Tipdar; 24/04/2006 a las 19:05