#include <bits/stdc++.h>
//二分查找
int search(int arr2[], int k, int s)
{
int left = 0;
int right = s - 1;
while (left<=right) {
int mid = (left + right) / 2;
if (k < arr2[mid])
{
right = mid - 1;
}
else if (k > arr2[mid])
{
left = mid + 1;
}
else if (k == arr2[mid])
{
return mid;
}
}
return -1;
}
int main()
{
//创建数组
int arr1[10] ;
int a;
printf("输入一组数:");
for ( a = 0; a < 10; a++)
{
scanf("%d", &arr1[a]);
}
int key=4;//查找4
int sz = sizeof(arr1)/sizeof(arr1[0]);//计算数组长度
//找到了返回下标
//找不到返回-1
int ret = search(arr1, key, sz);
if (ret == -1)
{
printf("找不到!\n");
}
else
{
printf("找到了,在%d位\n", ret);//数组从0开始数
}
return 0;
}
二分查找