二分查找原理
1.使用条件:
线性表中的记录必须按关键码有序;
必须采用顺序存储。
2.基本思想:
在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键码相等,则查找成功;若给定值小于中间记录的关键码,则在中间记录的左半区继续查找;若给定值大于中间记录的关键码,则在中间记录的右半区继续查找。不断重复上述过程,直到查找成功,或所查找的区域无记录,查找失败。
#include<stdio.h>// 二分查找
int main()
{
int arr[10];
int len;
int target;
printf("请输入数组元素(顺序输入):\n");
for (int i = 0; i < 10; i++)
{
scanf_s("%d", &arr[i]);
}
printf("请输入要查找的元素:");
scanf_s("%d", &target);
len = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int right = len - 1;
int index = -1;
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] == target)
{
printf("找到了目标值%d的索引为%d", target, mid);
index = mid;
return 0;
}
else if (arr[mid] < target)
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
if (index == -1)
printf("未找到目标值%d", target);
else
printf("找到了目标值%d的索引为%d", target, index);
return 0;
}
标签:二分,arr,记录,int,关键码,len,C语言,查找
From: https://blog.csdn.net/huangCalm_7/article/details/143952225