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

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

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(num1 ;
                }
                if(num == arr[middle]){
                    flag = true;
                }
                if(flag){
                    System.out.println("下标为:" + middle);
                    break;
                }
            }
            if(!flag){
                System.out.println("对不起没找到你想要的");
                System.out.println();
            }
        }

    }

}

你可能感兴趣的:(java)