Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/04/2010, 10:42
roser24
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 9 meses
Puntos: 2
busqueda binaria o dicotomica en c

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
  1. /*Se cargará aleatoriamente un vector numérico entero de 22 elementos con valores
  2.  positivos en orden ascendente. Pedir por teclado el valor a buscar en el vector y
  3.  realizar una búsqueda dicotómica. Antes de finalizar se visualizará el vector y si
  4.   el elemento se encontró la posición que ocupa y en caso contrario
  5.  se visualizará mediante un mensaje adecuado que el elemento no se encontró en el
  6.   vector.*/
  7.  
  8.   #include<stdio.h>
  9.   #include<time.h>
  10.   #include<stdlib.h>
  11.  
  12.   int main(){
  13.  
  14.   int i=0,vect[22],j,aux,valor,izq,drcha,centro;
  15.   char basura;
  16.     /*generacion de vector aleatorio*/
  17.   printf("\n******Vector generado aleatoriamente******:\n");
  18.   srand(time(NULL));
  19.   for(i=0;i<22;i++){
  20.           vect[i]=rand()%100;
  21.  
  22.     }
  23.     /*ordenamiento por el metodo de la burbuja*/
  24.   for(i=0;i<22;i++){
  25.     for(j=i+1;j<22;j++){
  26.  
  27.     if(vect[j]<vect[i]){
  28.  
  29.     aux=vect[j];
  30.     vect[j]=vect[i];
  31.     vect[i]=aux;
  32.     }
  33.     }
  34.     }
  35.  
  36.  
  37.  for(i=0;i<22;i++){
  38.  printf("\nlos valores del vector en la posicion %d \t -----> \t %d\n",i,vect[i]);
  39.  
  40.   }
  41.   /*busqueda dicotomica*/
  42.  
  43.     printf("Introducir el valor a buscar en el vector:\n");
  44.     scanf("%d",&valor);
  45.  
  46.  
  47.     izq=0;
  48.     drcha=21;
  49.  
  50. while(drcha<=izq){
  51.  
  52. centro=drcha+izq/2;
  53.     if(vect[centro]==valor){
  54.     return centro;
  55.     }
  56.     else{
  57.         if(valor <vect[centro]){
  58.         izq=centro-1;
  59.         }
  60.         else{
  61.         drcha=centro+1;
  62.         }
  63.         }
  64.         }
  65.   if(vect[i]==valor){
  66.  printf("El valor %d indicado se encontro en la  posicion %d\n",valor,i);
  67.         }
  68.         else{
  69.      printf("El valor %d no se encontro en el vector\n",valor);
  70.         }
  71.  
  72.   printf("Pulsa un tecla para finalizar:\n");
  73.   scanf("%c",&basura);
  74.     return 0;
  75.   }

si me podeis explicar un pokito mas este tipo de busqueda me ayudariais un monton.Salu2