Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Recursividad Divide y venceras

Estas en el tema de Recursividad Divide y venceras en el foro de C/C++ en Foros del Web. Buenas, tengo que encontrar la posicion de un elemento en un arreglo (array) desordenado, y me sugieren dividdiendo en dos partes del mismo tamaño el ...
  #1 (permalink)  
Antiguo 16/11/2012, 19:33
 
Fecha de Ingreso: noviembre-2011
Mensajes: 1
Antigüedad: 13 años, 1 mes
Puntos: 0
Recursividad Divide y venceras

Buenas, tengo que encontrar la posicion de un elemento en un arreglo (array) desordenado, y me sugieren dividdiendo en dos partes del mismo tamaño el mismo.

Mi solucion propuesta es

int encuentraPosicion(int v[], int p, int i, int j){

int r=-1;
int subproblema1;
int subproblema2;

int m = (i+j)/2;

if( i == j && p == v[i-1]){
r=i;
}else if( p = v[m]){
r=m;
}else{

//Aqui es donde no se combinar las soluciones de los casos recursivos,

subproblema1=encuentraPosicion(v, p, i, m)
subproblema2 = encuentraPosicion(v, p, m, j)

//por intentar combinar
if(subproblema1 != -1)
r=subproblema1;
else if(subproblema2 != -1)
r=subproblema2;
}
return r;

}

Algun experto que pueda y quiera ayudarme??
Gracias.
  #2 (permalink)  
Antiguo 16/11/2012, 22:01
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 13 años
Puntos: 94
Respuesta: Recursividad Divide y venceras

Hola! el metodo de dividir el arreglo a la mitad se usa con arreglos ordenados. Te recomiendo que busques: "busqueda binaria", ahi vas a encontrar el algoritmo y la explicacion de lo que queres hacer


Si el arreglo tiene que estar si o si desordenado, lo que se me ocurre es que recorras posicion por posicion del arreglo hasta encontrar el elemento, donde en cada llamada a la funcion le vas cambiando el indice:
primera llamada con indice 0
segunda llamada con indice 1
tercera llamada con indice 2
.....
y asi hasta encontrar el elemento


Un posible prototipo de funcion seria:
Código C:
Ver original
  1. int busqueda(int arr[],int tam,int indice, int elemento);


Cualquier cosa segui preguntando, saludos
  #3 (permalink)  
Antiguo 17/11/2012, 03:46
Avatar de ZeKi  
Fecha de Ingreso: noviembre-2012
Ubicación: Jaén
Mensajes: 61
Antigüedad: 12 años, 1 mes
Puntos: 6
Respuesta: Recursividad Divide y venceras

Si el vector está desordenado, no te queda otra que recorrerlo posición por posición hasta dar con el dato que buscas.

Etiquetas: divide, int, recursividad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:26.