Implementación de búsqueda binaria de matriz ordenada en lenguaje C

Principio La búsqueda binaria, también conocida como búsqueda a la mitad, solo es aplicable a matrices ordenadas. El principio de la búsqueda binaria es muy simple y la eficiencia de búsqueda de matrices ordenadas también es muy alta. El principio específico es comparar el valor objetivo k cada vez) con los datos en el medio de la matriz (representados por [mid] debajo, y mid representa el valor de índice de la posición media de la matriz). mayor que a [mid], continúe comparando k con un valor mayor que la mitad de la parte a[mid]; si k es menor que a[mid], continúe comparando k con el valor de la mitad de a[ parte media]. Nota: Para arreglos desordenados, si ordena primero y luego usa la búsqueda binaria, aunque este método se puede usar para buscar, cambiará la posición del elemento del arreglo más primitivo. Por lo tanto, para arreglos desordenados, es mejor usar un algoritmo de búsqueda básico para lograr

#include<stdio.h>
int main()
{
	int a[] = { 1,2,3,4,5,6,7,8,9,10,11,12,13 };
	int left = a[0];
	int sz = sizeof(a) / sizeof(a[0]);      //计算数组大小
	int right = a[sz - 1];    //使右值等于最后一个数字
	int k = 12;           //要查找的数是12
	int mid;
	while (left<=right)       //当左值小于=右值的时候进入循环,左值大于右值退出循环
	{
		 mid = (right + left) / 2;// 中间值等于左值加右值再除2
		if (k < mid)
		{
			right = mid-1;           //如果要找的数字小于mid,使右值等于mid-1
		}
		else if (k > mid)
		{
			left = mid + 1;      //如果要找的数字大于mid,使左值等于mid+1
		}
		else
		{
			printf("找到了,下标是:%d", mid - 1);    //如果要找的数字等于mid则找到了
			break;
		}
	}
	if (left > right)      //当左值大于右值时,就说明找不到
		printf("找不到");
	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/weixin_49449676/article/details/124212324
Recomendado
Clasificación