• Viernes 8 de Noviembre de 2024, 20:11

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - kas09013

Páginas: [1]
1
Java / Ordenacion mergesort
« en: Miércoles 25 de Mayo de 2011, 00:01 »
necesito ayuda con el programa de mergesort, si se ejecuta bien pero el que deberia ir en primera posicion lo pone en la segunda y en la primera posicion pone 0, alguna idea del porque?

Código: Java
  1.  import java.io.*;//Libreria De Java Para Ingresar Datos Desde Teclado
  2. class Mergesort1{// Nombre de La Clase
  3. public int mergesort (int v[], int p, int q)
  4. {
  5. // Ordena el fragmento v[p..q] del vector v
  6.  
  7. if (p < q)
  8. {
  9. int k = (p+q) / 2; // pto. medio del vector
  10. mergesort (v,p,k); // Ordenando la primera mitad
  11. mergesort (v,k+1,q); // Ordenando la seguda mitad
  12. combinar(v,p,k+1,q); // uniendo las dos mitades
  13. }
  14.  
  15. }
  16.  
  17. private void combinar(int v[], int p, int m, int q)
  18. {
  19. int combinado[] = new int[q-p+1];
  20.  
  21. int p1 = p;
  22. int p2 = m;
  23. int p3 = 0;
  24.  
  25. /* combinado[0..p3-1] : cuenta los elementos ordenados de
  26. v[p..p1-1] y v[m..p2-1] */
  27. while (p1 < m && p2 <= q)
  28. {
  29. if (v[p1] < v[p2])
  30. {
  31. combinado[p3] = v[p1];
  32. p1 = p1+1;
  33. }else
  34. {
  35. combinado[p3] = v[p2];
  36. p2 = p2+1;
  37. }
  38. p3 = p3+1;
  39. }
  40.  
  41. // X: (p1 == m) / (p2 = q+1)
  42. // Dels seguents bucles, nomes un d'ells s'executara alguna vegada
  43. // Es posen els elements que resten d'una taula a combinado.
  44.  
  45. while (p1 < m)
  46. {
  47. combinado[p3] = v[p1];
  48. p1 = p1+1;
  49. p3 = p3+1;
  50. }
  51.  
  52. while (p2 <= q)
  53. {
  54. combinado[p3] = v[p2];
  55. p2 = p2+1;
  56. p3 = p3+1;
  57. }
  58.  
  59. // Es copia combinado (ja esta ordenat) a v
  60. for (int i=0; i < q-p+1; i++)
  61. {
  62. v[p+i] = combinado[i];
  63. }
  64. }
  65.  
  66.  

2
Java / seleccion recursiva
« en: Martes 24 de Mayo de 2011, 20:12 »
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

3
Java / error Exception in thread "main" java.lang.StackOver
« en: Domingo 22 de Mayo de 2011, 04:17 »
necesito ayuda, cree el programa se seleccion en forma recursiva, pero me marca el error Exception in thread "main" java.lang.StackOverflowError    at SeleccionRecursivo.Seleccion(SeleccionRecursivo.java:22), eh leido el por qe de ese error y entendi que es por que el metodo se llama asi ismo  y s esta ciclando pero no se como corregirlo alguien me puede ayudar? este es el codigo :
import java.io.*;//Libreria De Java Para Ingresar Datos Desde Teclado
class SeleccionRecursivo{// Nombre de La Clase
public static int Seleccion(int numeros[], int n){
int aux, i, l, posMayor;
if(n>1){
   posMayor=0;
   for(i=1; i<n;i++){
      if(numeros>numeros[posMayor]){
      posMayor=i;
      }
      aux=numeros[n-1];
      numeros[n-1]=numeros[posMayor];
      numeros[posMayor]=aux;
   }
   
   System.out.println(" ");
              for (l=0; l<n; l++){// For Para Imprimir La Ordenacion De Los Numeros
              System.out.print("|");
              System.out.print(numeros[l] + "|");
             }
}
   return Seleccion(numeros, n-1);

}

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||**********************************************************||");
     
      }    
}

Páginas: [1]