有序升序数组的二分查找
//有序升序数组二分查找
#include<stdio.h>
#include<windows.h> //控制台显示
int BinSearch(int arr[],int num, int x)
{
int left = 0;
int right = num - 1;
while (left<=right) //条件判定
{
int mid = (left + right) / 2; //先与中间数字进行对比
if (x>arr[mid]) //如果x>数组下标为mid时,说明x在右边
{
left = mid + 1; //(6+10)/2,再进行查找的数不包含下标为mid的数
}
else if (x < arr[mid])
{
right = mid - 1; //(0+4)/2
}
else
{
return mid;
}
}
return -1; //找不到数字
}
int main()
{
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int num = sizeof(arr) / sizeof(arr[0]);
int who = 8;
int index = BinSearch(arr,num,who);
if (-1 == index)
{
printf("找不到\n");
}
else{
printf("数组中%d下标为:%d\n", who, index);
}
system("pause");
return 0;
}
版权声明:本文为shuangweiyebai原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。