编程C++二分查找

[复制链接]
查看11 | 回复2 | 2011-3-15 14:19:47 | 显示全部楼层 |阅读模式
给定一列有序的数。查询其中第一个大于x的数的位置。位置下标从0开始。如果这列数中不存在大于x的数,则输出-1。
Input
每组输入由四行组成,第一行一个整数N(1≤N≤10,000),表示这列数是N。第二行有N个由空格隔开的数,表示这列有序的数。第三行一个整数Q(1≤N≤10,000),表示有Q次查询。第四行有Q个由空格分开的整数,表示查询第一个大于这个数的位置。
Output
输出Q个整数,回答Q次查询。这Q个整数由每20个一行,由空格分开。
Sample Input
7
10 10 20 20 20 30 30
2
15 25
Sample Output
2 5

回复

使用道具 举报

千问 | 2011-3-15 14:19:47 | 显示全部楼层
#include using namespace std;int main(){ int i,j,m=0,n=0,high=0,low=0,mid=0; cin>>m; int *data=new int[m]; for(i=0;i>data; cin>>n; int *find=new int[n]; int *location=new int[n]; for(i=0;i>find;location=-1; } for(i=0;i#define MAXN 1000#define MAXQ 1000int main(){ int i,N,Q; int data[MAXN],query[MAXQ],index[MAXQ];scanf("%d",&N); for (i=0;i<N;i++) scanf("%
回复

使用道具 举报

千问 | 2011-3-15 14:19:47 | 显示全部楼层
二分查找示例: public static int GetIndex(int[] a, int num, int startIndex, int endIndex)
{
int index = (startIndex + endIndex) / 2;
//如?果?找ò不?到?返う?回?-1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行