elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 00:41  


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Busqueda binaria de un array desordenado
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Busqueda binaria de un array desordenado  (Leído 2,265 veces)
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.831


I'Love...!¡.


Ver Perfil WWW
Re: Busqueda binaria de un array desordenado
« Respuesta #15 en: 12 Noviembre 2011, 11:11 »

InsertSort?

Dulces Lunas!¡.


En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
naderST


Desconectado Desconectado

Mensajes: 467



Ver Perfil
Re: Busqueda binaria de un array desordenado
« Respuesta #16 en: 13 Noviembre 2011, 04:47 »

No se puede ordenar. De todas formas, gracias a todos

Si te exigen hacer búsqueda binaria en un arreglo desordenado no es posible... tiene que ser en un arreglo ordenado porque existen varios métodos para hacerlo como por ejemplo la búsqueda secuencial con centinela. Un sencillo ejemplo:


En línea
David_RM

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Busqueda binaria de un array desordenado
« Respuesta #17 en: 13 Noviembre 2011, 11:55 »

Igual no es busquedad binaria, el algoritmo ya lo explique anteriormente
En línea
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.831


I'Love...!¡.


Ver Perfil WWW
Re: Busqueda binaria de un array desordenado
« Respuesta #18 en: 13 Noviembre 2011, 12:09 »

Necesito hacer un código que haga la busqueda binaria de un array no ordenado. Entiendo el código usual pero a la hora de discriminar entre los dos sub-arrays no se muy bien que hacer.

Igual no es busquedad binaria, el algoritmo ya lo explique anteriormente

que dilema... si te lo dejaron de tarea pregunta a tu profesor algunos puntos criticos como los ya mensionados en este hilo.

Dulces Lunas!¡.
En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
David_RM

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Busqueda binaria de un array desordenado
« Respuesta #19 en: 13 Noviembre 2011, 12:25 »

Os dejo el enunciado, el algoritmo ya lo explique antes:

Código:
Consiste en buscar la posición de un elemento dado entre dos posiciones de un vector no ordenado. En caso de que exista, devolver la posición del elemento o -1 si no existe. Para resolver el problema mediante recursividad, consiste en dividir la estructura en dos partes del mismo tamaño.
En línea
ghastlyX
Colaborador
***
Desconectado Desconectado

Mensajes: 1.894



Ver Perfil
Re: Busqueda binaria de un array desordenado
« Respuesta #20 en: 13 Noviembre 2011, 13:31 »

Pero eso no es búsqueda binaria, puesto que necesariamente tendrás que explorar en caso peor las dos mitades y tendrá complejidad lineal.

Una posible implementación de lo que te piden de forma algo cutre sería la siguiente:
Código
#include <iostream>
#include <vector>
using namespace std;
 
int busca(int x, vector<int>& v, int a, int b) {
   if (a == b) return (v[a] == x) ? a : -1;
   return max(busca(x, v, a, (a + b)/2), busca(x, v, (a + b)/2 + 1, b));
}
 
int main() {
   int n;
   cin >> n;
   vector<int> v(n);
   for (int i = 0; i < n; ++i) cin >> v[i];
   int x;
   while (cin >> x) cout << busca(x, v, 0, n - 1) << endl;
}

Y son dos líneas de código la función. Sin embargo, se podría optimizar la función, para que por ejemplo si la primera llamada recursiva encuentra el elemento, no haga la segunda llamada.
En línea
CobraCY

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Busqueda binaria de un array desordenado
« Respuesta #21 en: 13 Noviembre 2011, 16:55 »

Hace algún tiempo me dejaron lo mismo como un pequeño ejercicio y esta fue la solución que propuse:

Código
int busqueda_binaria(int *a, int inicio, int fin, int val)
{
if(inicio==fin && a[inicio] != val)
return -1;
int t= fin/2;
if(a[t] == val)
return t;
if(a[t] > val)
return busqueda_binaria(a,inicio,t-1,val);
else
return busqueda_binaria(a,t+1,fin,val);
}
 

Como vez esto se puede mejorar para que funcione en menos lineas, pero eso ya te lo dejo de tarea para ti :).

Saludos.
En línea
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ShellSort + Busqueda Binaria
Programación C/C++
Riudo 1 635 Último mensaje 20 Abril 2006, 01:23
por jose2c
Busqueda Binaria « 1 2 »
Programación C/C++
SanMagic 21 12,692 Último mensaje 24 Mayo 2008, 07:34
por SanMagic
busqueda binaria
Programación C/C++
Sunshine66 3 1,519 Último mensaje 6 Mayo 2010, 07:42
por Akai
Busqueda binaria con palabras
Programación C/C++
soez 0 942 Último mensaje 3 Agosto 2010, 04:10
por soez
Busqueda binaria.
Java
NetJava 6 2,627 Último mensaje 28 Marzo 2011, 18:20
por NetJava
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines