本篇文章给大家带来的内容是关于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;
}
}
}
}下为运行结果:
立即学习“Java免费学习笔记(深入)”;
如果是无序数组用二分法来查找元素,先给数组排序即可。比如用冒泡排序法来排序升序(从小到大)。
下为具体代码:
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免费学习笔记(深入)”;
相关推荐:
以上就是Java查找实例:二分法查找元素的方法(代码)的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号