Implémentation de la recherche binaire d'un tableau trié en langage C

Principe La recherche binaire, également connue sous le nom de recherche par moitié, ne s'applique qu'aux tableaux triés. Le principe de la recherche binaire est très simple et l'efficacité de la recherche pour les tableaux triés est également très élevée. . Le principe spécifique est de comparer la valeur cible k à chaque fois) avec les données du milieu du tableau (représentées par un [mid] en dessous, et mid représente la valeur d'index de la position médiane du tableau). supérieur à a [mid], continuer à k Comparer avec une valeur supérieure au milieu de la partie a[mid] ; si k est inférieur à a[mid], continuer à comparer k à la valeur du milieu de a[ milieu]. . Remarque : pour les tableaux non ordonnés, si vous triez d'abord, puis utilisez la recherche binaire, bien que cette méthode puisse être utilisée pour rechercher, elle modifiera la position de l'élément du tableau le plus primitif. Par conséquent, pour les tableaux non ordonnés, il est préférable d'utiliser un algorithme de recherche de base pour atteindre

#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;
}

Je suppose que tu aimes

Origine blog.csdn.net/weixin_49449676/article/details/124212324
conseillé
Classement