根据输入的N,随机生成N个数,然后输入查找元素,在数组中进行二分查找,找到返回位置,未找到返回0,(主要表达二分查找思路,所以省略了对数组元素的排序,直接调用了库函数sort())。
代码如下:
#include
#include
#include
using namespace std;
int a[1000];
//二分查找
int Search_Bin ( int a[],int key,int n ) {
int low,high,mid;
low = 1; high = n;
while (low <= high) {
mid = (low + high) / 2;
cout << "a["<< mid <<"]=" << a[mid] << endl;
if (key == a[mid]) return mid;
else if (key < a[mid]) high = mid - 1;
else low = mid + 1;
}
return 0;
}
//输出数组的数据
void show(int n)
{
for(int i = 1;i<=n;++i){
cout << a[i] << " ";
if(i % 5 == 0)
cout << endl;
}
cout << endl;
}
int main()
{
int n; //生成个数
int search;//带查找的数据
cout << "请输入序列的个数:n";
cin >> n;
for(int i = 1;i<=n;++i)
a[i] = rand()%200+1;
//先排序才能二分查找
sort(a,a+n);
show(n);
cout << "请输入要查找的数字:n";
cin >> search;
int result = 0;//查找结果 默认未找到为 0
result = Search_Bin(a,search,n);
if(result == 0) cout << "查找数据不存在!n";
else cout << "查找数据位于第" << result << "个位置n";
return 0;
}
注:排序函数sort()要用到头文件
运行结果:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。