加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

二分查找(数据结构)

发布时间:2020-12-15 04:46:55 所属栏目:百科 来源:网络整理
导读:根据输入的N,随机生成N个数,然后输入查找元素,在数组中进行二分查找,找到返回位置,未找到返回0,(主要表达二分查找思路,所以省略了对数组元素的排序,直接调用了库函数sort())。 代码如下: #include #include #include using namespace std; int a[1

根据输入的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;

cout << "随机生成的序列是:n";

//先排序才能二分查找

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()要用到头文件?

运行结果:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读