本篇文章讲解的知识点主要围绕数组,废话不多说,只分享Java相关的干货!
二分法(折半法)查找
查找数组中的元素我们可以遍历数组中的所有元素,这种方式称为线性查找。线性查找适合与
小型数组,大型数组效率太低。如果一个数组已经排好序,那么我们可以采用效率比较高的二
分查找或叫折半查找算法。
见示例
假设,我们准备采用二分法取得 18 在数组中的位置
-
第一步,首先取得数组 0~9 的中间元素
中间元素的位置为:(开始下标 0 + 结束下标 9)/2=下标 4
通过下标 4 取得对应的值 15
18 大于 15,那么我们在后半部分查找
-
第二步,取数组 4~9 的中间元素
4~9 的中间元素=(下标 4 + 1 +下标 9)/2=下标 7
下标 7 的值为 18,查找完毕,将下标 7 返回即可
以上就是二分或折半查找法,此种方法必须保证数组事先是排好序的,这一点一定要注意
【示例代码】
-
public
class BinarySearchTest01 {
-
-
-
public static void main(String[] args) {
-
int[] data = {
11,
12,
13,
14,
15,
16,
17,
18,
19,
20};
-
int index = binarySearch(data,
18);
-
System.out.println(index);
-
}
-
-
-
//采用折半法查询,必须建立在排序的基础上
-
private static int binarySearch(int[] data, int value) {
-
//开始下标
-
int beginPos =
0;
-
//结束下标
-
int endPos = data.length -
1;
-
-
-
while (beginPos <=endPos) {
-
int midPos = (beginPos + endPos)/
2;
-
if (value == data[midPos]) {
-
return midPos;
-
}
else
if (value > data[midPos])
-
{ beginPos = midPos +
1;
-
}
else
if (value < data[midPos])
-
{ endPos = midPos -
1;
-
}
-
}
-
return -
1;
-
}
-
}
以上就是数组相关的知识点了,配套视频教程👇,正在学习Java的同学们一定要持续关注哦~~
Java零基础进阶视频教程
转载:https://blog.csdn.net/bjpowernode_com/article/details/112357449
查看评论