Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > JAVA
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-03-2009
chouki chouki is offline
Miembro
 
Registrado: mar 2009
Posts: 11
Poder: 0
chouki Va por buen camino
indice fuera de rango

hola muy buenas a tod@s
En principio quiero hacer un programa recursivo que me permite ordenar los datos (enteros) del vector usando inserción directa.
Procesoara cada paso i los elementos v1,...vi-1 están ordenados y se inserta entre ellos vi de forma que después v1...vi estén ordenados habrá que comenzar con i=2.
la idea de la inserción directa es abrir un hueco en la sucesión v1..vi-1 para encajar vi en la posición adecuada.
Estás un pequeña aproximación que hicé pero claro hay un desbordamiento de los indices del array que se ven claramente al seguir el algoritmo:
Código:
 
  public static void insercion(int vector[],int ta) 
  { 
     if (ta-1>0) 
     { 
        insercion(vector,ta-1); 
        insertar(vector,ta); 
     } 
  } 
  public static void insertar(int v[],int tam) 
  { 
    int pivote,i; 
    pivote=v[tam-1];  
    i=tam-1; 
    while (i>=0 && v[i]> pivote ) 
    { 
           v[i+1]=v[i]; 
           i--; 
    } 
    v[i+1]=pivote; 
  }
Pero en Principio si alguien se le ocurre una solución más eficiente que la mia estaré muy agradecido aquien me la puede facilitar yaque me ase falta urgentemente.
Muchisima gracias de antemano
En la espera de vuestra colaboración les saludo atentamente.
Responder Con Cita
  #2  
Antiguo 20-03-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Hola Chouki ,segun veo lo que quieres es ordenar los elementos de un vector,si es asi, te comento que existe muchos algoritmos ya para hacerlo:
por ejemplo Quick Sort,Bubble Sort,Selection Sort,Insertion Sort y otros.
El mejorcito es Quick Sort por ser mas rapido y recursivo.
En algunos link que te he puesto estan implementados para diferentes lenguajes de programacion inclusive java.Revisalo...
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #3  
Antiguo 20-03-2009
chouki chouki is offline
Miembro
 
Registrado: mar 2009
Posts: 11
Poder: 0
chouki Va por buen camino
gracias tio
por tu repuesta lo que pasa debo hacerlo por inserción directa de modo recursivo ojalà si tenia la posibilidad de elegir entre los algortimos pero es debo hacerlo de esta para efectuar una serie de comparaciones de eficiencia
pero en todos los modos muchisimas gracias por lo menos por tu iniciativa y tu colaboración
saludos
Responder Con Cita
  #4  
Antiguo 20-03-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Thumbs up

Cita:
...debo hacerlo de esta para efectuar una serie de comparaciones de eficiencia
Me memo amigo que no vas a poder mejorar la eficiencia de estos algoritmos que te he puesto como referencias,en especial al Quick Sort, te aseguro que esta recontra probado y aparte de eso estamos hablando de algoritmos bien pensados.No me tomes a mal, pero no pensaras reinventar la rueda no?......
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #5  
Antiguo 20-03-2009
chouki chouki is offline
Miembro
 
Registrado: mar 2009
Posts: 11
Poder: 0
chouki Va por buen camino
hola maestro
te doy toda la razón en lo que has comentado además seguro que sabrás de programación más que yo
lo que pasa piden un algoritmo de inserción recursivo
o sea no depende de mi
asi si te ocurre una solución recursiva pues te estaré agradecido si me la puedes facilitar
saludos
Responder Con Cita
  #6  
Antiguo 20-03-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Lightbulb

Cita:
hola maestro
La Biblia dice que a nadie debes decir maestro sino solo a uno Jesús.
Cita:
seguro que sabrás de programación más que yo
Nada que ver amigo, yo solo soy un aprendiz al igual que muchos que merodiamos por aqui.
Bueno en cuanto a tu problema, ya te comente que precisamente el algoritmo Quick Sort es recursivo , claro que existen algunas variantes que lo han hecho iterativo pero eso depende de cada uno.
Chekea el link en la ultima parte de abajo esta el codigo en java.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #7  
Antiguo 20-03-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Lightbulb Se me olvidaba

Si no te agrada ese codigo bueno es un ejemplo, busca en google por:
"QuickSort" o "Quick Sort" o "Quick Sort en java" y vas a encontrar miles
de codigo y referencias.
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #8  
Antiguo 21-03-2009
chouki chouki is offline
Miembro
 
Registrado: mar 2009
Posts: 11
Poder: 0
chouki Va por buen camino
muchisima gracias tio
todos los algoritmos que mencionaste están bien lo que pasa tiene por esfuerzo usando método de inserción directa recursivo,que no es por capricho ni nada de eso sino restricciones del programa.
saludos
Responder Con Cita
  #9  
Antiguo 21-03-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Lightbulb

Cita:
todos los algoritmos que mencionaste están bien lo que pasa tiene por esfuerzo usando método de inserción directa recursivo,que no es por capricho ni nada de eso sino restricciones del programa.
Entonces te sirve el Insertion Sort recursivo,como su nombre lo indica se utiliza
inserciones, desde luego originalmente es iterativo, pero se lo puede hacer recursivo asi como tu quieres revisalo o buscalo en google por "Insertion Sort recursivo".

__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #10  
Antiguo 21-03-2009
chouki chouki is offline
Miembro
 
Registrado: mar 2009
Posts: 11
Poder: 0
chouki Va por buen camino
hola
ahora lo que voy hacer es implimentar la versión iterativa ya luego veremos
con la querida versión recursiva
lo que pasa este procedimiento kdo hay datos duplicados en el array
por eje:6,1,2,0,106,1
a la hora de ordenar poner los datos repetidos uno detrás del otro
resultado de salida:0,1,1,2,6,106
no sé si el hecho de que salgan los datos repetidos están bien hecho u está mal?
este es el procedimiento que hice:
Código:
public
staticvoid insertar(int v[],int tam) { int aux,j; for(int i=1;i<tam;i++)
{
aux=v[i];
for( j=i-1;j>=0;j--)
{
if(aux>v[j]) { v[j+1]=aux;
break;
}
else// si no, sigue buscándola.
v[j+1]=v[j]; }
if(j==-1)
v[0]=aux;
}
}
gracias
Responder Con Cita
  #11  
Antiguo 21-03-2009
chouki chouki is offline
Miembro
 
Registrado: mar 2009
Posts: 11
Poder: 0
chouki Va por buen camino
gracias por vuestra ayuda

Última edición por chouki fecha: 21-03-2009 a las 18:46:49. Razón: està ya publicado
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TrackBar con rango ?? NeoNew Varios 4 13-03-2009 20:03:02
Rango de fechas chino150 Varios 17 08-02-2008 20:17:39
Si el Ipod fuera de M$ AzidRain La Taberna 2 03-01-2007 05:39:31
indice fuera de fecha pablo Conexión con bases de datos 5 09-03-2005 02:41:16


La franja horaria es GMT +2. Ahora son las 05:10:45.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi