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

Hola gracias por el enlace,ya entiendo el metodo busqueda pero no me ejecuta bien la busqueda...

mi codigo actual es el siguiente,si veis el error por fa decirmelo thanks.

Código C:
Ver original
  1. #include<stdio.h>
  2.   #include<time.h>
  3.   #include<stdlib.h>
  4.  
  5.   int main(){
  6.  
  7.   int i=0,vect[22],j,aux,valor,drcha,izq,centro;
  8.   char basura;
  9.     /*generacion de vector aleatorio*/
  10.   printf("\n******Vector generado aleatoriamente******:\n");
  11.   srand(time(NULL));
  12.   for(i=0;i<22;i++){
  13.           vect[i]=rand()&#37;100;
  14.  
  15.     }
  16.     /*ordenamiento por el metodo de la burbuja*/
  17.   for(i=0;i<22;i++){
  18.     for(j=i+1;j<22;j++){
  19.  
  20.     if(vect[j]<vect[i]){
  21.  
  22.     aux=vect[j];
  23.     vect[j]=vect[i];
  24.     vect[i]=aux;
  25.     }
  26.     }
  27.     }
  28.  
  29.  
  30.  for(i=0;i<22;i++){
  31.  printf("\nlos valores del vector en la posicion %d \t -----> \t %d\n",i,vect[i]);
  32.  
  33.   }
  34.   /*busqueda dicotomica*/
  35.      printf("Introduce el valor a buscar en el vector\n:");
  36.      scanf("%d",&valor);
  37.     izq=0;
  38.     drcha=21;
  39.     while(valor<=drcha){
  40.     centro=(izq+drcha)/2;
  41.     if(valor>vect[centro]){
  42.     izq=centro+1;
  43.     }
  44.     else if(valor<vect[centro]){
  45.     drcha=centro-1;
  46.     }else return centro;
  47.  
  48.     }
  49.  
  50.      if(valor==centro){
  51.      printf("El valor %d indicado se encontro en la  posicion %d\n",valor,i);
  52.      }
  53.      else{
  54.      printf("El valor %d no se encontro en el vector\n",valor);
  55.      }
  56.  
  57.   printf("Pulsa un tecla para finalizar:\n");
  58.   scanf("%c",&basura);
  59.     return 0;
  60.   }