二分搜索
来源:互联网 发布:微电影拍摄软件 编辑:程序博客网 时间:2024/06/05 08:45
/*
题目描述820:
二分搜索技术
题目描述
给定已按升序排好序的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<stdio.h>
#include<stdlib.h>
int count=0;
int binarySearch(int left,int right,int *a,int x)
{
if(left>right)return 0;
int mid=(left+right)/2;
count++;
if(a[mid]==x)return mid;
if(a[mid]>x) return binarySearch(left,mid-1,a,x);
return binarySearch(mid+1,right,a,x);
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int k;
int x;
scanf("%d %d",&k,&x);
int i;
int *a;
a=(int *)malloc(sizeof(int)*(k+1));
count=0;
for(i=1;i<=k;i++)
{
scanf("%d",&a[i]);
}
int index=binarySearch(1,k,a,x);
printf("%d %d\n",index,count);
}
return 0;
}
题目描述820:
二分搜索技术
题目描述
给定已按升序排好序的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<stdio.h>
#include<stdlib.h>
int count=0;
int binarySearch(int left,int right,int *a,int x)
{
if(left>right)return 0;
int mid=(left+right)/2;
count++;
if(a[mid]==x)return mid;
if(a[mid]>x) return binarySearch(left,mid-1,a,x);
return binarySearch(mid+1,right,a,x);
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int k;
int x;
scanf("%d %d",&k,&x);
int i;
int *a;
a=(int *)malloc(sizeof(int)*(k+1));
count=0;
for(i=1;i<=k;i++)
{
scanf("%d",&a[i]);
}
int index=binarySearch(1,k,a,x);
printf("%d %d\n",index,count);
}
return 0;
}
0 0
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- CVPR 2016-12-20
- 卷积神经网络反向传播推导
- VxWorks -- 信号量
- Python爬虫包 BeautifulSoup 学习(三) 实例
- sicily Message Flood STL中set和map的应用
- 二分搜索
- 设计模式-适配器模式
- boost学习之asio—chat
- 数据库系统概论 第1章--绪论--第2节-数据模型
- LVS-DR(Virtual Server via Direct Routing)原理说明与配置用例
- ServletConfig与ServletContext对象详解
- ruby:json
- Nginx配置文件详解
- java容器之Map