• Martes 30 de Abril de 2024, 00:06

Autor Tema:  seleccion recursiva  (Leído 3857 veces)

kas09013

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
seleccion recursiva
« en: Martes 24 de Mayo de 2011, 20:12 »
0
ayuuda por favor! estoi haciendo seleccion recursivo pero no me los ordena bien alguna idea del porque? aqui esta mi codigo:
 import java.io.*;//Libreria De Java Para Ingresar Datos Desde Teclado
class SeleccionRecursivo2{// Nombre de La Clase
public static int Seleccion(int v[], int n){
int i, minimo,l;
   if (n>=1) {
      minimo=0;
   for(i=1;i<n;i++)
      if(v<v[minimo])
      minimo=i;
      i=v[0];
      v[0]=v[minimo];
      v[minimo]=i;
   
   
   return   Seleccion(v,n-1);
   }else{
   return 0;
}
}
public static void main(String args[])throws IOException{
BufferedReader res1=new BufferedReader(new InputStreamReader(System.in));
long tiempoInicio = System.currentTimeMillis();
   int n;
   int v[]=new int [15];//Declaracion De Arreglo
   int res;// Declaracion De Variable
        System.out.println ( "n||************** Metodo De Odenacion Seleccion **************|| n||                                                         || ");
       System.out.println ( "||   1.-Cantidad De Numeros A Ordenar:           ||");
       System.out.print( "||      ");
       n=Integer.parseInt(res1.readLine());//Lee Los Datos Introducidos Desde Teclado
       System.out.println ( "||   2.-Numeros A Ordenar:                     ||");
             for (int i=0; i<n; i++){// Ciclo For Para Pedir que Indroduzca Los Valores
                System.out.print( "||      ");
               v=Integer.parseInt(res1.readLine());}// Lee y Almacena Los Datos Desde teclado En El Arreglo
                System.out.println("||   3.-Ordenacion De Numeros                 ||  n");
                   for (int i=0; i<n; i++){//Ciclo For Para La Ordenacion de Numeros
                      System.out.print("|");
                      System.out.print(v + "|");
                      }
       System.out.println(" ");
       res=Seleccion(v,n);//Llama All Metodo anterior Para Que Devuelva Datos
       long totalTiempo = System.currentTimeMillis() - tiempoInicio;// Funcion Que Mide El Tiempo Y Calcula El Tiempo Total Empleado A Partir De La Diferencia Del Tiempo Inicial Y Final
      System.out.println("n||El tiempo total de la ejecucion es :" + totalTiempo + " miliseg");
       System.out.println ( "n||**********************************************************||");
     
      }    
} //fin clase seleccion recursivo

alexg88

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
Re: seleccion recursiva
« Respuesta #1 en: Martes 24 de Mayo de 2011, 20:57 »
0
La próxima vez pon el código entre las etiquetas de código.

El problema que tienes es que siempre le pasas el array desde el inicio hasta la posición n-1
y guardas el mínimo en la posición 0, y por eso sólo se te ordena un número.

Lo mejor es que utilices el máximo.

Código: Java
  1.  
  2. public static int Seleccion(int v[], int n){
  3. int i, maximo,l;
  4. if (n>=1) {
  5. maximo=0;
  6. for(i=1;i<n;i++)
  7.  if(v[i]>v[maximo])
  8.   maximo=i;
  9. i=v[n-1];
  10. v[n-1]=v[maximo];
  11. v[maximo]=i;
  12.  
  13.  
  14. return  Seleccion(v,n-1);
  15. }else{
  16. return 0;
  17. }
  18. }
  19.  
  20.  

kas09013

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: seleccion recursiva
« Respuesta #2 en: Martes 24 de Mayo de 2011, 22:49 »
0
:) graciass ya me salio
« última modificación: Martes 24 de Mayo de 2011, 23:13 por kas09013 »

kas09013

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: seleccion recursiva
« Respuesta #3 en: Martes 24 de Mayo de 2011, 23:07 »
0
ya lo encontre :) fiinn de seleccion recursiva