//二分法查找
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;
}
//折半查找;前题条件必须是有序数组,并且按照一定的顺序排好顺序
07-18
07-18
07-18
07-18
07-18
07-18
07-18
07-18
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交