Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: monsefoster en 11 Noviembre 2009, 23:42 PM

Título: Arreglar vector de menor a mayor?
Publicado por: monsefoster en 11 Noviembre 2009, 23:42 PM
Chicos, yo de nuevo...Me pidieron que ordenara un vector de menor a mayor luego de leerlo, nunca lo habia hecho y creo que tengo la idea pero...no estoy segura? La cosa es que no se si existe algun metodo que lo haga directo, o tengo que hacerlo a mano? Habia pensado algo como esto:

public static void ordenar(int v[],int o[]) {
int x,min=v[0];
int segundo=v[0];
int t=0;
for (x=1;x<v.length;x++){
min = Math.min(min,v[x]);
}
o[t]=min;
t++;

for (x=0;x<v.length;x++){
if ((segundo>min) && (segundo<v[x])){
segundo=v[x];
o[t]=segundo;
t++;
}
}
System.out.println("t vale: "+t);
System.out.println ("segundo es:"+segundo);

for (x=0;x<o.length;x++){
System.out.print(o[x]+" ");
  System.out.println ("\n");
}
}


Como ven, v es el vector original, y O es el vector ordenado...

las lineas de System.out.println("t vale: "+t);
System.out.println ("segundo es:"+segundo);

solo son para "control" mio, ya que veo que el segundo "menor" valor no lo agarra, ni que se ejecuta la condicion del if...

pueden darme una mano?  :-[

Gracias...

P.D: Encontré un ejemplo en C# pero realmente no entendí  :-\ :-\
Título: Re: Arreglar vector de menor a mayor?
Publicado por: Leyer en 12 Noviembre 2009, 00:41 AM
super modifique tu metodo :rolleyes:
Código (java) [Seleccionar]

public static void ordenar(int array[],int arrayTemp[]) {
int n=0;
SortedSet<Integer> sortedSet = new TreeSet<Integer>();
for(int index=0;index<array.length;index++){
sortedSet.add(array[index]);
}
Iterator<Integer> s = sortedSet.iterator();
while(s.hasNext()){
arrayTemp[n]=s.next();
n++;
}
}
Título: Re: Arreglar vector de menor a mayor?
Publicado por: monsefoster en 12 Noviembre 2009, 00:44 AM
No entendi pero nada...

Encontré un codigo que es el siguiente:

                     for (x = 0; x < v.length; x++){
for (t = 0; t < v.length-1;t++){
if (v[t] > v[t+1]){
aux = v[t];
v[t] = v[t+1];
v[t+1] = aux;
}
}
}


Pero no entiendo que hicieron alli... realmente creo que nunca he entendido que hacen exactamente alli.  :(
Título: Re: Arreglar vector de menor a mayor?
Publicado por: Leyer en 12 Noviembre 2009, 00:51 AM
 :( q no entiendes acaso no te coloque un metodo q te los ordena como quieres :-\
Título: Re: Arreglar vector de menor a mayor?
Publicado por: monsefoster en 12 Noviembre 2009, 01:28 AM
Ah vale, no sabia que era un metodo...me podrias explicar lo que hiciste por favor?  :-\
Título: Re: Arreglar vector de menor a mayor?
Publicado por: Leyer en 12 Noviembre 2009, 03:44 AM
bueno use el generico treeSet y sorderSet los cuales garantizan el orden de los elementos en forma acendente o a la contraria en el metodo le agrego los elementos del array en el sorderSet este los ordena y guarda  los elementos de menor a mayor automaticamente luego leeo esos valores y los almaceno el el arrayTemp que es el nuevo array.

Saludos.
Título: Re: Arreglar vector de menor a mayor?
Publicado por: monsefoster en 12 Noviembre 2009, 05:12 AM
Gracias por responderme de nuevo...

Ya entendi tanto lo que hiciste tu, como el codigo que encontré...hice lo que mi ex prof de programacion llamaba "una corrida en frio", y así lo vi..
Gracias por su ayuda!   ;D ;D