# include <stdio.h>
# include <stdlib.h>
int BenarySearch( int* a , int len ,int findData )
{
if( a == NULL || len <= 0 )
{
return -1;
}
int istart = 0;
int iend = len -1;
while( istart < iend )
{
int mid = ( istart & iend ) + (( istart ^ iend ) >> 1);
if( a[mid] == findData )
{
return mid;
}
else if( findData < a[mid])
{
iend = mid - 1;
}
else
{
istart = mid + 1;
}
}
return -1;
}
int BinarySearchRecursion( int * a , int findData , int Start , int End )
{
if( Start > End )
{
return -1;
}
int mid = ( Start & End ) + (( Start ^ End ) >> 1);
if( a[mid] == findData )
{
return mid;
}
else if( findData < a[mid])
{
BinarySearchRecursion( a , findData , Start , mid - 1);
}
else
{
BinarySearchRecursion( a , findData , mid + 1 , End );
}
}
int main( )
{
int Array[] = { 0,1,2,3,4,5,6,7,8,9};
int len = sizeof( Array ) / sizeof( Array[0]);
int index1 = BenarySearch( Array , len , 4 );
int index2 = BinarySearchRecursion( Array , 4 , 0 , len );
printf(" index1 = %d ; index2 = %d \n" , index1 ,index2 );
}
数据结构:二分查找的递归与非递归实现--C实现
最新推荐文章于 2024-03-25 08:00:00 发布