//二分法查找
int as_bi_search(int a[],int n,int e)//数组升序排列
{
int mid;
int left = 0;
int right = n - 1;
while(left < right)
{
mid = (left + right) / 2;
if(e == a[mid])
{
return mid ;
}
if(e<a[mid])
{
left = mid + 1;
}
if(e>a[mid])
{
right = mid - 1;
}
}
return mid;
}
int de_bi_search(int a[],int n,int e)//数组降序排列
{
int mid;
int left = 0;
int right = n - 1;
while(left < right)
{
mid = (left + right) / 2;
if(e == a[mid])
{
return mid ;
}
if(e>a[mid])
{
left = mid + 1;
}
if(e<a[mid])
{
right = mid - 1;
}
}
return mid;
}
int main()
{
int a[] = {11,10,9,8,7,6,5,4,3,2,1};
int n = sizeof(a)/sizeof(a[0]);//数组长度
int ret = de_bi_search(a,11,6);
printf("%d\n",a[ret]);
printf("%d\n",ret);
return 0;
}
//折半查找;前题条件必须是有序数组,并且按照一定的顺序排好顺序
折半查找
最新推荐文章于 2025-05-31 16:01:53 发布