【笔试】Java 二分查找(递归,非递归)

来源:互联网 发布:摄像机ntp端口号 编辑:程序博客网 时间:2024/06/05 18:31
public class 二分查找 {//非递归方式public static int binarySearch(int[] nums, int des){int low = 0;int high = nums.length - 1;while(low <= high){int mid = (low + high) / 2;if(des < nums[mid])high = mid - 1;else if(des > nums[mid])low = mid + 1;elsereturn mid;}return -1; //未找到}//递归方式public static int binarySearch(int[] nums, int low, int high, int des){if(low <= high){int mid = (low + high) / 2;if(des < nums[mid]){high = mid - 1;binarySearch(nums, low, high, des);}else if(des > nums[mid]){low = mid + 1;binarySearch(nums, low, high, des);}else //des == nums[mid]return mid;}return -1; //未找到}public static void main(String[] args){int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9};System.out.println("非递归:" + binarySearch(a, 5));System.out.println("递归:" + binarySearch(a, 0, 8, 5));}}

0 0
原创粉丝点击