折半查找,二分查找
#include"stdio.h"
int zb_search(int* a, int len, int x);
int main()
{
int x;
printf("请输入要查找元素:");
scanf("%d", &x);
int a[] = { 3, 5, 10, 22, 24, 29 };
int len = sizeof(a) / sizeof(int);
zb_search(a, len, x);
return 0;
}
int zb_search(int a[], int len, int x)
{
int left = 0;
int right = len - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (x > a[mid])
{
left = mid + 1;
}
else if (x < a[mid])
{
right = mid - 1;
}
else
{
printf("找到了,它的下标为:%d\n", mid);
break;
}
}
if (left>right)
{
printf("不好意思,找不到!\n");
}
}