C++折半查找算法的实现
C++折半查找算法的实现:
#include
using namespace std;
int Bisearch(int data[],int x,int begin,int last); //折半查找函数,使用过程中只需要给出数组名字,要查找的数
值x,数组的起始位置begin及莫位置即可。
void PrintData(int data[],int length); //输出一个数组的所有元素。
void main()
{
int data[ ]={1,2,4,5,23,41,54,66,78,89}; //声明一个数组data[10],并为该数组赋值。
PrintData(data,10); //调用PrintData()函数输出data的值。
loop:
int x; //定义一个整形变量用于接收用于要查找的数值,并提示用于输入该值 cout
cin>>x;
system("cls");
PrintData(data,10);
int loaction = Bisearch(data,x,0,9); //调用函数Bisearch()函数查找用于输入的x在数组中的元素。 if( loaction == -1) //首先判断是否查找成功
{
cout
}
Else //当查找成功的情况下输出用户值所在的位置。
{
cout
}
goto loop;
}
void PrintData(int data[],int length)
{
cout
for (int i=0;i
{
cout
}
cout
}
int Bisearch(int data[],int x,int begin ,int last) //实现折半查找函数
{
if (begin >last) //判断是不是只有一个元素可以比较了。
{
return -1;
exit(0);
}
1
int mid=(begin + last) /2; if (x == data[mid]) //如果x与数组中data[mid]的值相等,则查找成功,本函数执行完毕。 { return mid; exit(0); } if ( x
Else
{
Bisearch(data,x,mid+1 ,last);
}
}
//当x>data[mid]的时候,则在后半部分查找数据x。 2