//此程序是折半查找的详细算法实现
#include<iostream>
using namespace std;
void CreateData(int data[],int length);//为一个数组赋值
//此函数是折半查找函数。其中data是所查寻的数组,length是数组的长度。x是所要查找的数,返回的值是数据x在数组中的位置
int Bisearch(int data[],int x,int begin,int last);//折半查找函数,使用过程中只需要给出数组名字,要查找的数值x,数组的起始位置begin及莫位置即可。
void PrintData(int data[],int length);//输出一个数组的所有元素。
void main()
{
//声明一个数组data[10],并调用CreateData()函数为该数组赋值。
int data[10];
CreateData(data,10);
//调用PrintData()函数输出data的值。
PrintData(data,10);
loop:
//定义一个整形变量用于接收用于要查找的数值,并提示用于输入该值
int x;
cout<<"请输入你要查找的值:";
cin>>x;
system("cls");
PrintData(data,10);
//调用函数Bisearch()函数查找用于输入的x在数组中的元素。
int loaction = Bisearch(data,x,0,9);
//首先判断是否查找成功
if( loaction == -1)
{
cout<<"查找失败,没有你要查找的值"<<endl;
}
//当查找成功的情况下输出用户值所在的位置。
else
{
cout<<"你要查找的值"<<x<<"的位置在第:"<<loaction+1<<"个位置!"<<endl;
}
goto loop;
}
//生成数据函数的定义。
void CreateData(int data[],int length)
{
for(int i=0;i<length;i++)
{
data[i] =i;
}
}//void CreateData(int data[],int length)
void PrintData(int data[],int length)
{
cout<<"你所要输出的数组的元素有:";
for (int i=0;i<length;i++)
{
cout<<data[i]<<" ";
}
cout<<endl;
}//void PrintData(int data[],int length)
//实现折半查找函数
int Bisearch(int data[],int x,int begin ,int last)
{
//判断是不是只有一个元素可以比较了。
if (begin >last)
{
return -1;
exit(0);
}
int mid=(begin + last) /2;
//如果x与数组中data[mid]的值相等,则查
折半查找算法实现(C ) 来自淘豆网m.daumloan.com转载请标明出处.