C语言二分查找
#include<stdio.h>
int main()
{
int n,key,low,mid,height,count;
low = 0;
height = 0;
mid = 0;
//数组长度
n = 0;
//查找的值
key = 0;
//查找次数
count = 0;
printf("请输入数组的长度:\n");
scanf("%d",&n);
int a[n];
height=n-1;
mid = (low+height)/2;
printf("请有序输入数组元素:\n");
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
printf("请输入你想要查找的key值:\n");
scanf("%d",&key);
//二分查找
//如果这里为low<=height,那么查找第一个元素时会多一次
while(low<height)
{
count++;
if(key == a[mid])
break;
else if(key < a[mid])
height = mid-1;
else if(key > a[mid])
low = mid+1;
mid = (low+height)/2;
}
if(key == a[mid])
printf("查找成功!\n查找%d次!a[%d]=%d\n",count,mid,a[mid]);
else
printf("里面没有您要查找的数!");
return 0;
}