【求职之路】(1)利用二分法查找一个数字在数组中的位置
来源:互联网 发布:交大医学院网络教育 编辑:程序博客网 时间:2024/04/19 00:27
最近打算换工作,频繁面试,现把面试题及其解答记录下来,方便学习。
问题:有一个升序排列无重复数字的数据,以及一个数字,利用二分法查找数字在数组中的位置,找到则返回其位置号,没找到返回-1.
解答:
通过两种方式实现:第一种方式为递归实现,需要传递数组的头和尾的位置。
public class MidFind {/** * * @param arr * @param key * @param startNum 数组位置号,为数组下标+1 * @param endNum 数组位置号,为数组下标+1 * @return */public static int getLocation(int[] arr,int key,int startNum,int endNum) {if (arr==null) return -1;int middleNum=(startNum+endNum)/2;System.out.println("中间值:"+middleNum);if (startNum<endNum) {if (key==arr[middleNum]) {return middleNum+1;} else if (key<arr[middleNum]) {return getLocation(arr,key,startNum,middleNum);} else {return getLocation(arr,key,middleNum,endNum);}} else if (startNum==endNum) {return startNum;} else {return -1;}}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint[] arr={1,3,4,5,6,7,11,46,255,743,888};int temp=getLocation(arr,11,1,11);System.out.println(temp);}}
第二种实现方式为非递归实现,则利用循环:
public class MidFind2 {public static int getLocation(int[] arr,int key) {if (arr==null) return -1;int middleNum=arr.length/2;if (key==arr[middleNum]) {return middleNum+1;}int startNum=0; //数组下标int endNum=arr.length-1; //数组下标while (startNum<=endNum) {middleNum=(startNum+endNum)/2;if (key<arr[middleNum]) {endNum=middleNum;} else if (key>arr[middleNum]) {startNum=middleNum;} else {return middleNum+1;}}return -1;}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint[] arr={1,3,4,5,6,7,11,46,255,743,888};int temp=getLocation(arr,5);System.out.println(temp);}}
0 0
- 【求职之路】(1)利用二分法查找一个数字在数组中的位置
- 用php二分法查找一个值在数组中的位置
- 程序功能:用二分法查找数字在递增数组中的位置,并打印出来。
- PHP写一个二分法查找一个值在数组中的位置
- 二维数组中的查找 之 二分法
- 二维数组中的查找 之 二分法
- 十八、二分查找 (由一个数找在数组中的位置)
- 二分法在有序数组中查找一个数
- 二分法查找数组中的数
- 查找某个元素在数组中的位置
- 寻找数字在旋转数组中的位置
- 输入一维数组中任意一个数,查找它在数组中的位置
- java二分法实现在有序的数组中定位某数在数组中的位置
- 利用二分法查找数据中的字串JAVA
- java常用算法之返回目标数字在有序数组中的位置(假设有序数组中不存在重复数字)
- 二分法查找已排序数列中目标数字的位置
- 二分法查找数组中一个数
- 使用二分法查找数组中的元素
- C++第3次实验(提高班)-数组
- 深入浅出DNS系列(八)- subnet
- POJ2289-Jamie's Contact Groups(二分图多重匹配)
- Linux 平台搭建C语言集成开发环境(Ubantu16.04)
- C指针基础(三)
- 【求职之路】(1)利用二分法查找一个数字在数组中的位置
- 解读 SysNativeCompressFile
- FABS函数
- 狄拉克函数- dirac 分布
- python安装环境的配置
- 导致全表扫描的情况
- CSS各种对齐代码,左对齐、右对齐、中间对齐、底部对齐、两端对齐等,代码简单
- Centos7虚拟机网络重启failed失败
- 283.Move Zeroes(C语言)