常见算法(二分查找)
版权声明
- 本文原创作者:清风不渡
- 博客地址:https://blog.csdn.net/WXKKang
二分查找
二分查找是一种快速检索数据的算法。它不会对数据执行排序等操作。注意:对数组执行二分查找要求首先对数组按照升序排序,否则查找结果是错误的。
(1)编程实现思路
二分查找法实际上就是每次都查中间的那个数。当前数比中间的数小,那么就在前半部分数据中查找;如果比比当前数大,就在后半部分数据中查找。按这个规律依次查找,直到找到最后一个是中间数。在这个过程中有匹配则表示查找到,binarySearch返回位置的下标值;如果没匹配则返回-1,代码如下:
package cn.com;
public class Demo {
public static void main(String[] args) {
int[] array = { 1, 4, 3, 6, 8 };
int search = Demo.search(array, 8);
if (search == -1) {
System.out.println("抱歉,数组中没有这个数");
}else {
System.out.println("该数的索引值为:"+search);
}
}
public static int search(int[] array,int k) {
int max = array.length-1;
int min = 0;
int mid = (max+min)/2;
while (array[mid]!=k) {
if (min<=max) {
if (array[mid]>k) {
max = mid - 1;
}else if(array[mid]<k){
min = mid + 1;
}
mid = (max+min)/2;
}else {
mid = -1;
break;
}
}
return mid;
}
}
(2)binarySearch()
我们知道,要进行二分查找首先这个数组必须是有序的,所以我们可以根据Arrays工具类中的方法先将数组排序再进行二分查找,代码如下:
package cn.com;
import java.util.Arrays;
public class Demo {
public static void main(String[] args) {
int[] array = { 1, 4, 3, 6, 8 };
//将数组排序,默认为升序
Arrays.sort(array);
//进行二分查找
int binarySearch = Arrays.binarySearch(array, 8);
//处理返回值
if (binarySearch<0) {
System.out.println("抱歉,数组中没有这个数");
}else{
System.out.println("数组中该数的索引值为:"+binarySearch);
}
}
}
本文深入解析了二分查找算法的实现原理与编程技巧,强调了数据预排序的重要性,并提供了两种实现方式:自定义搜索方法与利用Arrays工具类的binarySearch()函数。通过实例演示了如何在Java中有效运用二分查找,适用于初学者与进阶开发者。
——常见算法(二分查找)&spm=1001.2101.3001.5002&articleId=103364066&d=1&t=3&u=182d017a71354f139ca5e2eca12f1146)
1085

被折叠的 条评论
为什么被折叠?



