关于折半查找方法的问题

Shadowoftheend 2018-05-31 03:28:03
public static int halfSearch(int[] arr, int number) {
int min = 0;
int max = arr.length-1;
int mid = 0;
while (min <= max ) {
mid = (max + min)/2;
if (number > arr[mid])
min = mid+1;
else if (number < arr[mid])
max = mid-1;
else
return mid;
}
return -1;
}
//上面这个是标准版本的折半查找方法
public static int half(int[] arr, int number) {
int min = 0;
int max = arr.length;
int mid = 0;
while (min <= max ) {
mid = (max + min)/2;
if (number > arr[mid])
min = mid;
else if (number < arr[mid])
max = mid;
else
return mid;
}
return -1;
}
这个是我觉得可以达到一样效果的,我试着运行一下结果一样,请问我这个方法是不是可以代替上面那个了,毕竟不是代码越精简越好吗?
...全文
429 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nayi_224 2018-05-31
  • 打赏
  • 举报
回复
不能替换,下面的是经典的错误写法。 试试运行这个 int[] arr = {1, 2, 3}; System.out.println(half(arr, 4)); 死循环了。 还有,“代码越精简越好”只是个迷信
Cathy313 2018-05-31
  • 打赏
  • 举报
回复
两个没什么区别呀,你也就索引跟上面的有点区别,实质上都一样
Shadowoftheend 2018-05-31
  • 打赏
  • 举报
回复
引用 2 楼 nayi_224 的回复:
不能替换,下面的是经典的错误写法。 试试运行这个 int[] arr = {1, 2, 3}; System.out.println(half(arr, 4)); 死循环了。 还有,“代码越精简越好”只是个迷信
谢谢dalao,昨晚想了一晚被你一下子点醒了.
Shadowoftheend 2018-05-31
  • 打赏
  • 举报
回复
引用 4 楼 an341221 的回复:
二分法查找不是应该用递归吗?
还可以用递归的吗,dalao我不太懂,我是新手
欣赏月光 2018-05-31
  • 打赏
  • 举报
回复
二分法查找不是应该用递归吗?
Cathy313 2018-05-31
  • 打赏
  • 举报
回复
引用 2 楼 nayi_224 的回复:
不能替换,下面的是经典的错误写法。 试试运行这个 int[] arr = {1, 2, 3}; System.out.println(half(arr, 4)); 死循环了。 还有,“代码越精简越好”只是个迷信
果然代码不能只看大概。受教了,感觉自己最近有点飘……

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧