用二分法查找数组中的下标
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(); } } } }
相关文章推荐
- 二维数组, 二分法查找数组元素下标 快速查找数组最大值 数组作为实参的问题
- 设计一个模板类Sample,用于对一个有序数组采用二分法查找元素下标
- 61.从键盘输入10个正数存入数组x中,然后输入要查找的整数a,如找到则输出a及a的下标,如找不到,则把a存入到数组的最后。
- 【二分查找】查找数组中第一个比k大的数的下标
- 【查找】在按照绝对值排序的数组中,找出和为k的两个数的下标
- 写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回 - 1.(折半查找)
- 二分法查找有序数组中某元素个数
- 提高篇—调用函数查找数组元素下标(二分法查找)
- python实现:使用二分查找,查找有序数组中,一个数字最后出现的下标
- 查找一个有序数组中的一个元素——二分法
- LeetCode 34 Search for a Range (有序数组中查找给定数字的起止下标)
- C++二分法在数组中查找关键字的方法
- [LeetCode]—Search for a Range 有序数组查找target的下标范围
- 一维数组中的一些常用方法(打印数组、逆序、选择排序、冒泡排序、二分法查找、普通查找)
- 数组排序 和 二分法查找
- //二分法查找数组中的某个元素(二分法查找时数组元素必须是有序的)
- 数据结构与算法--有序数组和二分法查找
- 迭代用在有序数组二分法查找中,递归的二分法查找更简洁,但速度可能会慢一点
- 写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
- 二分法查找数组