SoloCodigo

Programación General => Java => Mensaje iniciado por: Ric_Monje en Domingo 11 de Mayo de 2008, 23:03

Título: Ordenación Rápida (quicksort)
Publicado por: Ric_Monje en Domingo 11 de Mayo de 2008, 23:03
Señores, les comento que ando trabajando en un programa de gestion de informacion "Manejo de Inventario", e terminado mi diseño en Uml, pero ahora se me presento un pequeño problema, que necesito ordenar un arreglo de una longitud bastante grande, buscando en internet algoritmos de ordenamiento me tope con uno el (quicksort), y pues queria solicitar su ayuda, para saber si conocen de otro algoritmo un poco mas facil, o de ser posible si me podrian colaborar con el codigo del ante mesionado..Gracias
Título: Re: Ordenación Rápida (quicksort)
Publicado por: Ric_Monje en Domingo 11 de Mayo de 2008, 23:30
Bueno, acabo de lograr ordenar mi arreglo usando el algoritmo antes mencionado, y pues como cree el post prsentando mi probelma, ahora presento la solucion.

Lo modificque un poco y le agrege el metodo array, para cerar el arreglo y para recorre el nuevo arreglo ya ordenado.

Código: Text
  1.  
  2.  
  3. public class Quicksort {
  4.  
  5.   public void array(){
  6.     int arrNumeros[ ] ={1,4,7,4,8,9,24,35,67,96,53,24,68,100,12,58,76,54,3,2};
  7.     int arrNumerosOrdenados[ ]=quicksort(arrNumeros,0,19);
  8.     for(int i=0;i<arrNumerosOrdenados.length;i++){
  9.       System.out.println("Numero :  "+arrNumerosOrdenados[i]);
  10.     }
  11.   }
  12.  
  13.   public int[] quicksort(int[] a, int izq,int der){
  14.     int i=izq;
  15.     int j = der;
  16.     int centro = a[(izq+der)/2];
  17.     do{
  18.  
  19.       while(a[i] < centro){
  20.         i++;
  21.       }
  22.       while(a[j] > centro){
  23.         j--;
  24.       }
  25.       if (i <= j){
  26.         int aux = a[i];
  27.         a[i] = a[j];
  28.         a[j] = aux;
  29.         i++;
  30.         j--;
  31.       }
  32.     }while (i <= j);
  33.  
  34.     if(izq < j){
  35.       quicksort(a,izq,j);
  36.     }
  37.     if(i < der){
  38.       quicksort(a,i,der);
  39.     }
  40.     return a;
  41.   }
  42.  
  43.   public static void main(String arg[]){
  44.     Quicksort q = new Quicksort();
  45.     q.array();
  46.   }
  47. }
  48.  
  49.  
  50.  

Cualquier duda con respecto al codigo me la pueden hacer y con gusto la respondere.