折半查找算法实现(C++)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//此程序是折半查找的详细算法实现

#include

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<<"查找失败,没有你要查找的值"<

}

//当查找成功的情况下输出用户值所在的位置。

else

{

cout<<"你要查找的值"<

}

goto loop;

}

//生成数据函数的定义。

void CreateData(int data[],int length)

{

for(int i=0;i

{

data[i] =i;

}

}//void CreateData(int data[],int length)

void PrintData(int data[],int length)

{

cout<<"你所要输出的数组的元素有:";

for (int i=0;i

{

cout<

}

cout<

}//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]的值相等,则查找成功,本函数执行完毕。

if (x == data[mid])

{

return mid;

exit(0);

}

//当x>data[mid]的时候,则进行作面查找数据x。采用递归方法实现。

if ( x < data[mid] )

{

Bisearch(data,x,begin ,mid-1);

}

//如果x

else

{

Bisearch(data,x,mid+1 ,last);

}

}

相关文档
最新文档