您的位置:首页 > 其它

用二分法查找数组中的下标

2017-11-21 15:14 232 查看

这个小示例可以进行重复测试,方便多次使用,效果明显!

package cn.wwz.test;

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

/**
* 使用二分法查找元素下标
* @Author WWZ
* @Date 2017-11-21下午2:40:25
*/
public class Two {

public static void main(String[] args) {
int[] arr = new int[20];        //生成数组的大小--可以更换为其它数值
Random ra = new Random();
Scanner sc = new Scanner(System.in);
int j = 0;
for (int i = 0; i < arr.length; i++) {
arr[i] = ra.nextInt(100);   //生成100以内的随机数
}
Arrays.sort(arr);   //将数组排序
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+"\t");
j++;
if(j%10==0){
System.out.println();
}
}
while(true){
System.out.println("请输入您想要查看的数字:");
int num = 0;
try{
num = Integer.valueOf(sc.next());
}
catch(Exception e){
System.out.println("请输入正确的数字");
System.out.println();
continue;
}
int begin = 0;
int end = arr.length-1;
boolean flag = false;
while(begin<=end){
int middle = (begin+end)/2;
if(num>arr[middle]){
begin = middle + 1;
}
else if(num<arr[middle]){
end = middle - 1 ;
}
if(num == arr[middle]){
flag = true;
}
if(flag){
System.out.println("下标为:" + middle);
break;
}
}
if(!flag){
System.out.println("对不起没找到你想要的");
System.out.println();
}
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐