• Viernes 8 de Noviembre de 2024, 06:41

Autor Tema:  Ordenación Rápida (quicksort)  (Leído 2048 veces)

Ric_Monje

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Ordenación Rápida (quicksort)
« en: Domingo 11 de Mayo de 2008, 23:03 »
0
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


Ric_Monje

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Ordenación Rápida (quicksort)
« Respuesta #1 en: Domingo 11 de Mayo de 2008, 23:30 »
0
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.