首页 > 学院 > 开发设计 > 正文

二分查找

2019-11-06 06:53:06
字体:
来源:转载
供稿:网友
/** * 二分查找算法: * 将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象, * 如果要找的元素值小 于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半 * * 循环实现 */ public static void binSearch(int number) { int[] arrays = {3, 5, 7, 9, 15, 24, 56, 89, 99, 132, 567, 896, 980, 9120}; int low = 0; int high = arrays.length - 1; int mid = 0; while (low <= high) { mid = (int) Math.ceil((high + low) / 2); //Math.ceil方法向下取整。 if(number == arrays[mid]) { System.out.PRintln(mid); return ; } else if (number < arrays[mid]) { high = mid - 1; } else { low = mid + 1; } } System.out.println("该数值不存在"); } //递归实现二分查找 public static void binSearch2(int[] arrays, int number, int low, int high) { int mid = (int) Math.ceil((low + high) / 2); if (number < arrays[low] || number > arrays[high] || low > high ) { System.out.println("该数值不存在"); } else if(number == arrays[mid]) { System.out.println(mid); return ; } else if (number < arrays[mid]) { binSearch2(arrays, number, low, mid-1); } else { binSearch2(arrays, number, mid + 1, high); } }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表