Java查找实例:二分法查找元素的方法(代码)
程序员文章站
2022-03-10 17:50:14
...
本篇文章给大家带来的内容是关于Java查找实例:二分法查找元素的方法(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
二分法查找原理思路:
搜索数据与 有序数组 中间元素比较以确定在中间元素左边还是右边,如果在右边,则调整最小搜索索引值,然后进入下次循环;如果在左边,则调整最大搜索索引值,然后进入下次循环;如果相等则当前位置就是查找数据所在位置,停止循环;
注意:
因为是根据数组元素之间的大小关系来查找元素的,所以数组必须是有序的数组,而且升序(从小到大)与降序(从大到小)的代码也会不同。本篇以升序为例。
public class Dichotomy { public static void main(String[] args) { int [] array = {1,2,3,4,5}; int target = 2;//即array[1] int low = 0; int high = array.length - 1; while (low <= high) { int middle = (low + high) / 2; if (target > array[middle]) { low = middle + 1; } else if (target < array[middle]) { high = middle - 1; } else { System.out.println(middle); break; } } } }
下为运行结果:
如果是无序数组用二分法来查找元素,先给数组排序即可。比如用冒泡排序法来排序升序(从小到大)。
下为具体代码:
public class Dichotomy { public static void main(String[] args) { int [] array = {3,2,5,1,4}; //排序 int temp = 0; for (int time = 1; time < array.length; time++) { for (int i = 0; i < array.length-time; i++) { if (array[i+1]<array[i]) { temp = array[i+1]; array[i+1] = array[i]; array[i] = temp; } } } for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } //二分法查找 int target = 2;//即array[1] int low = 0; int high = array.length - 1; while (low <= high) { int middle = (low + high) / 2; if (target > array[middle]) { low = middle + 1; } else if (target < array[middle]) { high = middle - 1; } else { System.out.println(middle); break; } } } }
下为运行结果:
相关推荐:
以上就是Java查找实例:二分法查找元素的方法(代码)的详细内容,更多请关注其它相关文章!
上一篇: C++中如何避免内存泄漏?
下一篇: 二分法查找介绍
推荐阅读
-
PHP查找数组中只出现一次的数字实现方法【查找特定元素】
-
【转载】 C#中通过Where方法查找出所有符合条件的元素集合
-
php快速查找数据库中恶意代码的方法
-
C#中List集合使用Max()方法查找到最大值的实例
-
实例分析之用ASP编程实现网络内容快速查找的代码
-
【转载】C#中List集合使用LastOrDefault方法查找出最后一个符合条件的元素
-
浅析jQuery中常用的元素查找方法总结
-
【转载】ArrayList使用LastIndexOf方法查找最后一个符合条件的元素位置
-
【转载】C#的ArrayList使用IndexOf方法查找第一个符合条件的元素位置
-
JAVA中正则表达式匹配,替换,查找,切割的方法