Ver Mensaje Individual
  #4 (permalink)  
Antiguo 01/04/2010, 13:43
Avatar de newboy_master
newboy_master
 
Fecha de Ingreso: enero-2008
Ubicación: Granada
Mensajes: 882
Antigüedad: 16 años, 3 meses
Puntos: 46
Respuesta: busqueda binaria o dicotomica en c

Te dejo uno que tengo de clase y funciona, luego lo adaptas a tu código si quieres:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <conio.h>
  4. main()
  5. {
  6.       int vector[10],i,j,aux,izq,der,cen,valor;
  7.      
  8.       for(i=0;i<10;i++){
  9.                         printf("Introduce un numero: ");
  10.                         scanf("%d",&vector[i]);
  11.                         }
  12.       for(i=0;i<10;i++){
  13.                         for(j=0;j<(10-i);j++){
  14.                                           if(vector[j]>vector[j+1]){
  15.                                                                    aux=vector[j];
  16.                                                                    vector[j]=vector[j+1];
  17.                                                                    vector[j+1]=aux;
  18.                                                                    }
  19.                                          
  20.                        
  21.                                           }
  22.                         }
  23.       printf("el vector ordenado de menor a mayor queda asi: ");                  
  24.       for(i=0;i<10;i++)
  25.       printf(" %d ",vector[i]);
  26.      
  27.       printf("\nNumero que queremos buscar: ");
  28.       scanf("%d",&valor);
  29.      
  30.       izq=0;
  31.       der=9;
  32.       cen=(9+1)/2;
  33.       while(vector[cen] != valor && izq<der){
  34.                                                if (vector[cen]>valor){
  35.                                                                       der=cen-1;
  36.                                                                       }
  37.                                                else izq=cen+1;
  38.                                                
  39.                                                cen=(izq+der)/2;
  40.                                                }
  41.       if(vector[cen]==valor)
  42.       printf("Encontrado en la posicion %d",cen+1);
  43.       else printf("No encontrado");
  44.      
  45.      
  46.      
  47.       getche();
  48. }
__________________
@jslirola - Programador Web Freelance.