Hola,chicos tengo muxas dudas con respecto a la busqueda binaria o dicotomica en un vector... si me podeis hechar una ayudadita muchas gracias.
el ejercicio es el siguiente:
Código C:
Ver original/*Se cargará aleatoriamente un vector numérico entero de 22 elementos con valores
positivos en orden ascendente. Pedir por teclado el valor a buscar en el vector y
realizar una búsqueda dicotómica. Antes de finalizar se visualizará el vector y si
el elemento se encontró la posición que ocupa y en caso contrario
se visualizará mediante un mensaje adecuado que el elemento no se encontró en el
vector.*/
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main(){
int i=0,vect[22],j,aux,valor,izq,drcha,centro;
char basura;
/*generacion de vector aleatorio*/
printf("\n******Vector generado aleatoriamente******:\n"); for(i=0;i<22;i++){
}
/*ordenamiento por el metodo de la burbuja*/
for(i=0;i<22;i++){
for(j=i+1;j<22;j++){
if(vect[j]<vect[i]){
aux=vect[j];
vect[j]=vect[i];
vect[i]=aux;
}
}
}
for(i=0;i<22;i++){
printf("\nlos valores del vector en la posicion %d \t -----> \t %d\n",i
,vect
[i
]);
}
/*busqueda dicotomica*/
printf("Introducir el valor a buscar en el vector:\n");
izq=0;
drcha=21;
while(drcha<=izq){
centro=drcha+izq/2;
if(vect[centro]==valor){
return centro;
}
else{
if(valor <vect[centro]){
izq=centro-1;
}
else{
drcha=centro+1;
}
}
}
if(vect[i]==valor){
printf("El valor %d indicado se encontro en la posicion %d\n",valor
,i
); }
else{
printf("El valor %d no se encontro en el vector\n",valor
); }
printf("Pulsa un tecla para finalizar:\n"); return 0;
}
si me podeis explicar un pokito mas este tipo de busqueda me ayudariais un monton.Salu2