Java - Ayuda para quicksort

 
Vista:

Ayuda para quicksort

Publicado por oswaldo (2 intervenciones) el 21/08/2011 17:25:01
Hola queria pedirles ayuda, ya que si lanzo el metodo main se me queda colgado, he intentado buscar donde se queda colgado pero no se donde esta el error.
Los datos necesitan de una string y una edad, y tenemos sus respectivos metodos getter.
La forma de ordenarlos es en quicksort.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
public class Rapidos {
 
    public static void ordena (Dato [] datos) {
        int a = particion(datos,0,datos.length - 1);
 
        if (0 < a - 1) {
            particion(datos, 0, a - 1);
        }
        if (a < datos.length - 1) {
            particion(datos, a, datos.length - 1);
        }
 
    }
 
 
    public static int particion (Dato [] datos, int left, int right ) {
        int i = left;
        int j = right;
 
        Dato aux;
        Dato pivote = datos[(i + j) / 2];
 
 
        while (i <= j) {
            while (datos[i].getEdad() < pivote.getEdad()) {
                i++;
            }
            while (datos[j].getEdad() > pivote.getEdad()) {
                j--;
            }
 
            if(datos[j].getEdad() == pivote.getEdad()) {
                if (datos[j].getNombre().compareTo(pivote.getNombre()) > 0) {
                    aux = datos[i];
                    datos[i] = datos[j];
                    datos[j] = aux;
                    i++;
                    j--;
                }
            }
 
            else {
                if (i <= j) {
                    aux = datos[i];
                    datos[i] = datos[j];
                    datos[j] = aux;
                    i++;
                    j--;
                }
            }
        }
        return i;
    }
 
 
     public static void main (String [] args) {
          Dato [] datos = new Dato [4];
 
          Dato a = new Dato ("Maria", 30);
         Dato b = new Dato ("Megj", 25);
         Dato c = new Dato ("Agustin", 45);
         Dato d = new Dato ("Tomas",15);
 
             datos[0]=a;
             datos[1]=b;
             datos[2]=c;
             datos[3]=d;
         ordena(datos);
 
         print(datos);
 
 
     }
 
     public static void print ( Dato [] datos) {
 
         for (int i = 0; i<datos.length;i++) {
             System.out.println(datos[i] + " ");
         }
     }
}


Gracias por su tiempo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder