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: Últimos eventos sobre seguridad/inseguridad

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Busqueda binaria de un array desordenado
0 Usuarios y 1 Visitante 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)
David_RM

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Busqueda binaria de un array desordenado
« en: 10 Noviembre 2011, 18:29 »

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.


En línea
ghastlyX
Colaborador
***
Desconectado Desconectado

Mensajes: 1.894



Ver Perfil
Re: Busqueda binaria de un array desordenado
« Respuesta #1 en: 10 Noviembre 2011, 19:40 »

La búsqueda binaria la puedes aplicar cuando tienes una función de entrada (en tu caso un array) que es monótona. Si el array no está ordenado, una búsqueda binaria no es correcta por motivos evidentes si entiendes como funciona con un array ordenado. Si quieres buscar un elemento en concreto necesitarás hacer una búsqueda lineal.


En línea
David_RM

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Busqueda binaria de un array desordenado
« Respuesta #2 en: 11 Noviembre 2011, 11:06 »

El algoritmo lo que hacer es dividir recursivamente el array en dos partes iguales, hasta llegar al caso base que es que el array tenga un elemento
En línea
satu

Desconectado Desconectado

Mensajes: 263

Siempre aprendiendo


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

Hola

Pero si el array no está ordenado qué criterio utilizas para dividirlo??

Saludos
En línea

Breakbeat como forma de vida
David_RM

Desconectado Desconectado

Mensajes: 8


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

Siempre en dos mitades iguales. Ejemplo:
[5,7,8,3,4,9,1,3] se divide [5,7,8,3] y [4,9,1,3]. A su vez [5,7,8,3] se divide en [5,7] y [8,3]. [5,7] se divide en [5] y [7], con arrays de un elemento que es el caso base.

El problema es como implementar todo ese algoritmo en C.
En línea
Ruso_x

Desconectado Desconectado

Mensajes: 4



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

La búsqueda binaria la puedes aplicar cuando tienes una función de entrada (en tu caso un array) que es monótona.

Como bien dijo ghastlyX hay que tener un array ordenado, el procedimiento el cual me enseñaron es hacer una ordenacion tipo Bubble, i cuando terminas puedes hacer la busqueda binaria, en otro caso la unica solucion es una busqueda lineal.

Divides el array en 2 i compruebas si el elemento que busquas es > o < que el elemento que has utilizado para dividir el array EJ.

Suponemos un array ordenado:

2245566789 i buscamos el 8 entonces primero

2245 /5/ 66789 el elemento top(numero de elementos/2) (el segundo 5)
es el elemento que buscas?? => NO
es menor o mayor? = menor entonces tiene que estar en el array de la derecha

66789 => 66 /7/ 89

es el elemento que buscas?? => NO
es menor o mayor? = menor entonces tiene que estar mas a la derecha

|8| / 9
es el elemnto que buscas?? => SI

« Última modificación: 11 Noviembre 2011, 14:23 por Ruso_x » En línea

Saludos
LearningSpanishProgrammer

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: Busqueda binaria de un array desordenado
« Respuesta #6 en: 11 Noviembre 2011, 14:41 »

Puedes hacer busqueda binaria en un arreglo desordenado!

Solo necesita crear un arreglo de índices y ordenalo usando el arreglo de valores.
En línea

Estoy aprendiendo español, y tu estas aprendiendo programación
David_RM

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Busqueda binaria de un array desordenado
« Respuesta #7 en: 11 Noviembre 2011, 18:37 »

Bueno, voy avanzando, ya tengo el código:

int buscaElemento(int n, const Vector v, int inf, int sup){
   double res1;
   double res2;
   double res = -1.0;

   if(sup-inf == 0){
      if(v[inf] == n){
         res = inf;
      }
   } else {
        res1 = buscaElemento(n, v, inf, sup-inf/2);
        res2 = buscaElemento(n, v, (sup-inf/2)+1, sup);
   }

   if(res1 != -1.0){
      res = res1;
   } else if(res2 != -1.0){
      res = res2;
   }

   return res;
}

El problema ahora es que no funciona, se pilla el programa, supongo que será por las conversiones entre int y double no?
En línea
ghastlyX
Colaborador
***
Desconectado Desconectado

Mensajes: 1.894



Ver Perfil
Re: Busqueda binaria de un array desordenado
« Respuesta #8 en: 11 Noviembre 2011, 20:06 »

Como ya dije antes, si el array está desordenado, NO se puede hacer una búsqueda binaria, puesto que sería incorrecta. Si tienes que hacer una binaria por algún motivo, lo tendrás que ordenar antes.

Así que por mucho que lo intentes, el código es imposible que funcione sobre un vector desordenado.
En línea
Don Pollo

Desconectado Desconectado

Mensajes: 66

/* No comments */


Ver Perfil
Re: Busqueda binaria de un array desordenado
« Respuesta #9 en: 11 Noviembre 2011, 20:10 »

Realizar una búsqueda binaria en un array desordenado es totalmente absurdo.
En línea




David_RM

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Busqueda binaria de un array desordenado
« Respuesta #10 en: 11 Noviembre 2011, 22:45 »

Ya expliqué como es el algoritmo. Se qué es absurdo, pero es lo que me han pedido en la facultad xD
En línea
LearningSpanishProgrammer

Desconectado Desconectado

Mensajes: 67


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

David_RM, tienes que hacer lo seguiente:

Solo necesita crear un arreglo de índices y ordenalo usando el arreglo de valores.

int arreglo[] = { 9 5 2 1};
int idxs[] = { 3 2 1 0 }

Hablé esto, pero tu no había visto.
En línea

Estoy aprendiendo español, y tu estas aprendiendo programación
naderST


Desconectado Desconectado

Mensajes: 467



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

Es como dice LearningSpanishProgrammer para implementar búsqueda binaria tienes que tener el arreglo en orden de alguna u otra manera. Con indices estaría bien.
En línea
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.831


I'Love...!¡.


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

Ya expliqué como es el algoritmo. Se qué es absurdo, pero es lo que me han pedido en la facultad xD

Pues yo creo que quisieron que usaras tu materia GRIS...

Primero ordena el array... despues aplicas el proceso de ordenacion binaria!¡.

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 #14 en: 12 Noviembre 2011, 09:48 »

No se puede ordenar. De todas formas, gracias a todos
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