El lenguaje C utiliza un método binario para encontrar palabras clave
# include & ltstdlib.h & gt
#Definir tamaño 15
int main()
{
int binarioBuscar(int [], int, int, int);
void print header(void
void printRow(int [ ], int, int, int);
int a[Tamaño], I, clave, elemento
for(I = 0; i<= Tamaño-1; i++) p>
a[I]= 2 * I;
printf("Ingrese un número entre 0 y 28:");
scanf("% d ", & clave amp);
imprimir encabezado();
elemento=binarySearch(a, clave, 0, Tamaño-1); -1)
printf("\nEncontrado %d en el elemento de matriz %d!\n", clave, elemento);
Otros
printf(" \n¡No encontrado %d!\n ", clave);
Sistema("pausa");
}
void printHeader()
{
int I;
printf(" \ n subíndices:\ n ");
for (I = 0;i<=Tamaño- 1;i++)
printf("%3d",I);
printf("\n");
for(i=1;i< =4*tamaño;i++)
printf("-");
printf("\n");
}
int binarioSearch(int array[], int searchKey, int low, int high)
{
void printRow(int array[], int low, int middle, int high)
int medio
mientras(bajo <=alto){
中= (bajo+alto)/2;
printRow(matriz, baja, media, alta);
if(searchKey==matriz[media])
Devuelve media;
si no (búsqueda) clave & lt;array[middle])
Alto=medio-1;
Otro
Bajo=medio+1;
}
return-1;
}
void printRow(int array[], int bajo, int medio, int alto)
{
int I;
for(I = 0;i<= Tamaño-1;i++)
if (i & ltlow | | i & gmuslo )
printf(" ");
else if(i==medio)
printf("%3d* ",array[I]);
Otros
printf("%3d",array[I]);
printf(" \ n ");
}
Análisis de eficiencia: lineal
La búsqueda elimina las limitaciones de la clasificación de matrices. La desventaja es que no es adecuada para la búsqueda de datos a gran escala y el método de búsqueda es relativamente anticuado. Si el número a buscar es el último número N de la matriz, entonces la búsqueda comienza desde 0 y atraviesa N veces, y la complejidad del tiempo es O (n). En el método de búsqueda binaria, si la palabra clave de búsqueda es menor que el elemento central de la matriz, se busca en la primera mitad de la matriz; de lo contrario, se busca en la segunda mitad de la matriz. Complejidad del tiempo: O (log2N), si la palabra clave no se ha encontrado en la submatriz especificada, la submatriz se dividirá nuevamente a la mitad y la búsqueda se repetirá hasta que la palabra clave sea igual al elemento medio de la submatriz. -array, o no se encuentran palabras clave. En el peor de los casos, al usar el método binario para encontrar una matriz de 1024 elementos, solo necesita comparar 10 veces, es decir, dividir 1024 entre 2 y luego dividirlo continuamente entre 10 veces para obtener 1. Úselo si hay 1048576 elementos. Sin embargo, una búsqueda lineal simple requiere una búsqueda de 2^20. Se puede ver que la eficiencia del método binario es mucho mayor que la de la búsqueda lineal. Para una matriz de 65.438+0 mil millones de elementos, la comparación promedio entre 500 millones de veces y 30 veces es simplemente un mundo de diferencia. Por lo tanto, dominar el método de dicotomía es muy eficaz para procesar bibliotecas de matrices enormes.