二分搜索技术
来源:互联网 发布:软件项目研究开发方法 编辑:程序博客网 时间:2024/06/05 07:49
二分搜索技术
题目描述
给定已按升序排好序的n个元素a[0:n-1],现要在这n个元素中找出一特定元素x。
输入
输入包括若干个用例,第一行为一个正整数n表示用例个数,接下来每个用例占两行,第一行为为一个正整数k和x,表示k个元素,要求查找x,第二行为k个已排序正整数,
输出
每个用例用一行输出找出的元素的位置和比较次数,用一个空格隔开,如果不存在,则位置用0表示。
样例输入
4
5 3
1 2 3 4 5
6 7
2 3 4 6 8 10
10 40
1 5 9 10 20 25 33 35 38 39
3 8
2 5 8
样例输出
3 1
0 3
0 4
非递归:
题目描述
给定已按升序排好序的n个元素a[0:n-1],现要在这n个元素中找出一特定元素x。
输入
输入包括若干个用例,第一行为一个正整数n表示用例个数,接下来每个用例占两行,第一行为为一个正整数k和x,表示k个元素,要求查找x,第二行为k个已排序正整数,
输出
每个用例用一行输出找出的元素的位置和比较次数,用一个空格隔开,如果不存在,则位置用0表示。
样例输入
4
5 3
1 2 3 4 5
6 7
2 3 4 6 8 10
10 40
1 5 9 10 20 25 33 35 38 39
3 8
2 5 8
样例输出
3 1
0 3
0 4
3 2
一个简单二分搜索。
递归的方法:
#include <iostream>using namespace std;int goal,cont;int find(int a[] ,int left,int right){if(left>right)return -1;else{cont++;int mid = (left+right)/2; //中间的下标if(goal==a[mid])return mid;else if(goal<a[mid])return find(a,left,mid-1);elsereturn find(a,mid+1,right);} } int main(){int n;int len;int a[100000];cin>>n;while(n--){cont=0;cin>>len>>goal;for(int i=0; i<len; i++)cin>>a[i];int s = find(a,0,len-1);cout<<s+1<<" "<<cont<<endl;}return 0;}
非递归:
#include <iostream>using namespace std;int cont;int findata(int a[],int x,int n){ int left=0,right=n-1; while(left<=right) { cont++; int mid = (left+right)/2; if(x==a[mid]) return mid; else if(x<a[mid]) right = mid -1; else left = mid+1; } return -1;}int main(){int t,n,a[50000],i,x;cin>>t;while(t--){cont=0;cin>>n>>x;for(i=0; i<n; i++)cin>>a[i];int s = findata(a,x,n);cout<<s+1<<" "<<cont<<endl;}return 0;}
0 0
- 二分搜索技术
- 2.1 二分搜索技术
- 二分搜索技术
- 模板:二分搜索技术
- 二分搜索技术
- 分治法---二分搜索技术
- 动态数组 选择排序 二分搜索技术
- 二分搜索技术(分治法)
- 分治策略之二分搜索技术
- 算法实现(3)二分搜索技术
- 经典算法之二分搜索技术
- 经典算法之二分搜索技术
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- Leetcode_7_Reverse Integer
- hdu1423(最长上升公共子序列)
- Mecanim动画系统 - 使用Blend Trees控制角色动作
- hdu4512(最长上升公共子序列变形)
- Raspberry pi,一个好玩的派:第四季 NOOBS
- 二分搜索技术
- js正则表达exec与match的区别说明
- BZOJ 1911 APIO 2010 特别行动队 斜率优化DP
- javascript 函数和内置对象
- Servlet 二 :另眼看servlet
- 做出漂亮的Java界面--substance.jar的使用
- POJ 1160 (区间DP+四边形优化)
- ORA-27301: OS failure message: Not enough space
- Java集合学习:HashMap的实现原理和工作原理