二分法查找(折半查找)

简介: 二分法查找(折半查找)

思路:(1)先将数组内元素按从小到大顺序排好

 (2)声明两个变量,一个最小值 low:0,一个最大值 high:数组.length-1,再在循环中声明一个变量 middle:(low +high)/2

(3)判断:如果 middle = 目标元素,return middle;如果 middle > 目标元素,high=middle-1;如果 middle< 目标元素,low=middle+1

平均时间复杂度:O(log(n))

 

import java.util.Arrays;
//二分法查找;(折半查找)
public class BinarySearchTest {
    public static void main(String[] args) {
        int[] arr = {30,20,50,10,80,9,7,12,100,40,8};
        int searchWord =40;//所要查找的数;
        Arrays.sort(arr);
        /**二分法查找之前,一定要对数组元素先进行排序!!!*/
        System.out.println(Arrays.toString(arr));
        System.out.println(searchWord+"元素的索引:"+binarySearch(arr,searchWord));
    }
    public static int binarySearch(int[] array,int value){
        int low = 0;//low--high是查找区间,low开始位置,high结束位置;
        int high = array.length - 1;
        while(low <= high){
            int middle = (low+high) / 2;
            if(value == array[middle]){
                return middle;
            }
            if (value < array[middle]){
                high = middle-1;
            }
            if (value > array[middle]){
                low = middle + 1;
            }
        }
        return -1;//如果array数组中没有要查找的value值,则返回-1;
    }
}

 

© 著作权归作者所有

相关文章
|
1月前
|
算法 C# 索引
C#二分查找算法
C#二分查找算法
|
5月前
|
算法 搜索推荐 Java
二分查找算法详解及实现
二分查找算法详解及实现
80 2
|
6月前
|
算法 测试技术 API
深入理解二分查找算法(一)
深入理解二分查找算法(一)
|
6月前
|
存储 算法
03 折半查找
  折半查找又称为二分查找。它仅适用于有序的顺序表。   折半查找的基本思想:首先给定值 key 与表中中间位置的元素比较,若相等,则查找成功,返回该元素的存储位置;若不等,则所需查找的元素只能在中间元素以外的前半部分或后半部分(例如,在查找表升序排列时,若给定值 key 大于中间元素,则所查找的元素只可能在后半部分)。然后在缩小的范围内继续进行同样的查找,如此重复,知道找到位置,或确定表中没有所需要查找的元素,则查找不成功,返回查找失败的信息。  
35 0
|
6月前
|
存储 算法
02 顺序查找
顺序查找   顺序查找也可以叫做线性查找。它对顺序表和链表都适用。对于顺序表可以通过数组下标递增扫描每个元素;链表通过指针 next 依次扫描每个元素。顺序表通常分为:对一般的无序线性表的顺序查找和按关键字有序的线性表的顺序查找。 一般线性表的顺序查找
59 0
|
6月前
|
存储 算法 C#
C# | 二分查找算法的实现
二分查找法一种在**有序数组**中查找目标值的算法。划重点——“**有序**”,与需要遍历整个数组的查询算法不同,二分查找法通过将数组分成两部分来快速定位目标值所在的位置。 它的主要好处在于它的效率很高。因为它能够通过每次排除一半的元素来快速缩小搜索范围,因此在大型数据集上使用二分查找法可以显著提高查找速度。
58 0
|
算法
04查找算法:顺序查找法、二分查找法
04查找算法:顺序查找法、二分查找法
135 0
04查找算法:顺序查找法、二分查找法
|
存储 算法 PHP
查找算法:二分查找法(折半查找)
查找算法:二分查找法(折半查找)
120 0
查找算法:二分查找法(折半查找)