龙空技术网

Java查找算法——二分查找(折半查找)

平凡动漫 191

前言:

眼前你们对“java二分法算法”大概比较注重,朋友们都需要学习一些“java二分法算法”的相关资讯。那么小编也在网上收集了一些有关“java二分法算法””的相关文章,希望我们能喜欢,我们快快来学习一下吧!

前提条件:已排序的数组中查找

二分查找的基本思想是:首先确定该查找区间的中间点位置: int mid = (low+upper) / 2;然后将待查找的值与中间点位置的值比较:若相等,则查找成功并返回此位置。若中间点位置值大于待查值,则新的查找区间是中间点位置的左边区域。若中间点位置值小于待查值,则新的查找区间是中间点位置的右边区域。下一次查找是针对新的查找区间进行的。

步骤:

第一步,先用之前学过的排序方法将数组按升序排序

第二步,取中间数,中间数大于要找的数,找中间数左半部分,负责找右半部

第三步:重复第一步和第二步,直到找到数据或者比较完所有数据。

Java代码

这里排序可以看我之前写的文章

以下代码为方便复制粘贴

public class BinarySearch { public static void main(String[] args) { int[] array = new int[]{0,53,63,38,71,25,22,11,95,38}; //先排序,这里用的是冒泡排序 int[] sort = BubbleSort.sort(array); System.out.println(Arrays.toString(sort)); int search = search(sort, 53,0,sort.length-1); System.out.println(search); } public static int search(int[] array,int ele,int low,int high){ while (low <= high){ //找到中间值 int mid = (low + high) / 2; if(array[mid] == ele){ return mid; }else{ //如果中间值小于要查找的值,去右半部分继续查找;负责去左半部分去查找 if(array[mid] < ele){ low = mid++; }else{ high = mid--; } } } return -1; }}

标签: #java二分法算法