VC实现顺序与二分查找(太简陋,见笑了)

王朝vc·作者佚名  2006-02-01
窄屏简体版  字體: |||超大  

原理:

顺序查找:

在一个已知无序队列中找出与给定关键字相同的数的具体位置。原理是让关键字与队列中的数从第一个开始逐个比较,直到找出与给定关键字相同的数为止。

二分查找:

在一个已知有序队列中找出与给定关键字相同的数的具体位置。原理是分别定义三个指针low、high、mid分别指向待查元素所在范围的下界和上界以及区间的中间位置,即mid=(low+high)/2,让关键字与mid所指的数比较,若等则查找成功并返回mid,若关键字小于mid所指的数则high=mid-1,否则low=mid+1,然后继续循环直到找出或找不到为止。

源代码:

顺序查找:

int OrderSearch() //顺序查找

{

int i,z;

int a[5]={6,38,52,89,100}; //定义队列

cout<<"请输入一个数:";

cin>>z; //输入关键字

cout<<endl;

for(i=0;i<5;i++)

{

if(z==a[i]) //比较

return i;

else{

}

}

return 10; //若查找不到,返回一个非a[]数组下标的数以便处理

}

二分查找:

int SearchBin() //二分查找

{

int low,high,z,mid; //定义下界和上界以及中间位置的指针及关键字z

int a[5]={6,38,52,89,100};

cout<<"请输入一个数:";

cin>>z;

cout<<endl;

low=0;high=4; //下界和上界所指示的初始位置

while(low<=high)

{

mid=(low+high)/2;

if(z==a[mid])

{

return mid; //若关键字等于mid所指的数

}

else if(z<a[mid])

high=mid-1; //若关键字小于mid所指的数

else

low=mid+1; //若关键字大于mid所指的数

}

return 10; //若查找不到,返回一个非a[]数组下标的数以便处理

}

主函数:

void main()

{

cout<<"=====顺序查找====="<<endl<<endl;

int n;

n=OrderSearch();

if(n!=10)

cout<<"该数是队列中的第"<<n+1<<"个"

<<endl<<endl<<endl;

else //若n=10(找不到时返回的值)

cout<<"队列中无此数"<<endl<<endl<<endl;

cout<<"=====二分查找====="<<endl<<endl;

int m;

m=SearchBin();

if(m!=10)

cout<<"该数是队列中的第"<<m+1<<"个"<<endl<<endl;

else

cout<<"顺序表中没有此数"<<endl<<endl;

}

头文件:#include<iostream.h>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航