33,311
社区成员
发帖
与我相关
我的任务
分享
......
mid = low + (high-low)/2;
#include <iostream>
using namespace std;
int search(int *, int, int );
void main()
{
int a[6]={13,21,54,67,98,100};
int size = sizeof(a)/sizeof(a[0]); //获取数组大小
int x;
cout<<"请输入需要查找的数:";
cin>>x; //需要查找的数
cout <<search(a,x,size)<<endl;
}
int search(int *a, int x, int size)
{
int low,mid,high;
low = 0;
high = size - 1;
while(low <= high){
mid=(low+high) / 2;
if(x == a[mid])
return mid;
else if(x < a[mid])
high = mid - 1;
else if(x > a[mid])
low = mid + 1;
}
return -1;
}
int search(int *a,int low,int high,int x)
{
//low=0;high=5; 这句不要
int mid=(low+high)/2;
if(x <a[mid]) return search(*a,low,mid-1,x); //mid-1
else if(x>a[mid]) return search(*a,mid+1,high,x); //mid+1
else if(low=high){if(x==a[mid]) return high;}
else return -1;
}
#include <iostream>
using namespace std;
int search(int *,int low,int high,int x);
void main()
{
int a[6]={13,21,54,67,98,100};
int x;
int low,high;
low=0;high=5;
cin>>x;
cout <<search(a,low,high,x);
getchar();
}
int search(int *a,int low,int high,int x)
{
int mid = (low + high)/2;
if( low < high )
{
if( x <= a[mid] )
{
search( a, low, mid, x );
}
else
{
search( a, mid+1, high, x );
}
}
else if( low == high )
{
if( x == a[mid] )
{
return low;
}
else
{
return -1;
}
}
else
{
return -1;
}
}
int BinarySearch1(int A[],int low, int high, int x)
{
if (low == high)
{
if (A[low] == x)
return low;
else return -1;
}
int mid;
mid = low + (high-low)/2;
if (A[mid] < x)
return BinarySearch1(A,mid+1,high,x);
else
return BinarySearch1(A,low,mid-1,x);
}
#include <iostream>
using namespace std;
int search(int *,int low,int high,int x);
void main()
{
int a[6]={13,21,54,67,98,100};
int x;
int low=0,high=5;
cin>>x;
cout <<search(a,low,high,x);
}
int search(int *a,int low,int high,int x)
{
//low=0;high=5; //这样每次递归调用都被初始化
int mid=(low+high)/2;
if(x <a[mid])
return search(a,low,mid-1,x);
else if(x>a[mid])
return search(a,mid+1,high,x);
else if(low=high)
{
if(x==a[mid])
return high;
}
else
return -1;
}
#include <iostream>
using namespace std;
int search(int *,int low,int high,int x);
void main()
{
int a[6]={13,21,54,67,98,100};
int x;
int low,high;
low=0;high=5;
cin>>x;
cout <<search(a,low,high,x);
}
int search(int *a,int low,int high,int x)
{
int mid=(low+high)/2;
if(x <a[mid]) return search(a,low,mid-1,x);
else if(x>a[mid]) return search(a,mid+1,high,x);
else if(low=high){if(x==a[mid]) return high;}
else return -1;
}