题目描述
给定一个数组,其采用如下代码定义:
int data[200];
for(i = 0 ; i < 200 ; i ++)data[i] = 4 * i + 6;
现给定某个数,请你求出它在 data 数组中的位置(下标)。
输入描述
输入一个待查找的整数(该整数一定在数组 data 中)。
输出描述
输出该整数在数组中的指标。
输入输出样例
示例 1
输入
262
输出
64
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
package com.plan;
import java.util.Scanner;
public class text {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] data = new int[200];
int i;
for( i = 0 ; i < 200 ; i ++)//题目定义数组升序排列
data[i] = 4 * i + 6;
int x = sc.nextInt();
int flog;//定义用于查找的下标
flog = i/2;
int r = i/2;//记录flog左侧的下标数量
int l = i-r;//记录flog右侧下标数量
while(true){
if(x==data[flog]){
System.out.println(flog);//对比成功,输出题目要求的下标
break;
}
else if(x>data[flog]){//如果需要查找的数比现在下标所指的数大,需要将下标右移
flog = flog+r/2;
r = r/2;
l = i - r;
}
else{
flog = flog-l/2;//如果需要查找的数比现在下标所指的数小,则下标左移
l = l/2;
r = i - l;
}
}
}
}