今天写了一个二分查找函数,详细请看注释
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int bin_search(int arr[], int left, int right, int key)
{
int mid = 0;
while (left <= right)
{
int mid = (left + right) / 2;//要注意mid不能放在while的外面,因为mid随时变化
if (arr[mid] < key)
left = mid + 1;
else if (arr[mid] > key)
right = mid - 1;
else
return mid;//将mid的值返回给z
}
return -1;//可以是-2、-3、-4等等
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int left = 0;
int right = sizeof(arr) / sizeof(arr[0]) - 1;
int key = 7;//想要查找的数
int z = bin_search(arr, left, right, key);
if (z >= 0)
printf("找到了,下标是%d\n",z);
else
printf("找不到");
return 0;
}