#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int arr[5] = {1,3,5,7,9};
int to_find = 0;
int left = 0;
int right = sizeof(arr) / sizeof(arr[0])-1;
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] < to_find)
{
left = mid + 1;
}
else if (arr[mid] > to_find)
{
right = mid - 1;
}
else
{
printf("找到了,下标为:%d\n", mid);
break;
}
}
if (left > right)
{
printf("没找到!");
}
printf("\n");
system("pause");
return 0;
}
定义一个有序数组,设定它的左右下标和中间下标mid。每次进行折半查找,比较查找的数和中间的数,若查找的数比mid大,则左下标等于mid-1,若查找的数比mid小,则右下标等于mid+1。若查找的数等于mid,则break。