折半查找算法实现(C++)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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); } }