二分法查找(折半查找)

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

思路:(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;
    }
}

 

© 著作权归作者所有

相关文章
|
8天前
|
算法 测试技术 API
深入理解二分查找算法(一)
深入理解二分查找算法(一)
|
8天前
|
存储 算法
03 折半查找
  折半查找又称为二分查找。它仅适用于有序的顺序表。   折半查找的基本思想:首先给定值 key 与表中中间位置的元素比较,若相等,则查找成功,返回该元素的存储位置;若不等,则所需查找的元素只能在中间元素以外的前半部分或后半部分(例如,在查找表升序排列时,若给定值 key 大于中间元素,则所查找的元素只可能在后半部分)。然后在缩小的范围内继续进行同样的查找,如此重复,知道找到位置,或确定表中没有所需要查找的元素,则查找不成功,返回查找失败的信息。  
16 0
|
8天前
|
存储 算法
02 顺序查找
顺序查找   顺序查找也可以叫做线性查找。它对顺序表和链表都适用。对于顺序表可以通过数组下标递增扫描每个元素;链表通过指针 next 依次扫描每个元素。顺序表通常分为:对一般的无序线性表的顺序查找和按关键字有序的线性表的顺序查找。 一般线性表的顺序查找
22 0
|
8天前
|
存储 算法 C#
C# | 二分查找算法的实现
二分查找法一种在**有序数组**中查找目标值的算法。划重点——“**有序**”,与需要遍历整个数组的查询算法不同,二分查找法通过将数组分成两部分来快速定位目标值所在的位置。 它的主要好处在于它的效率很高。因为它能够通过每次排除一半的元素来快速缩小搜索范围,因此在大型数据集上使用二分查找法可以显著提高查找速度。
21 0
|
8月前
|
算法
二分查找算法
以整型升序数组arr为例,将数组分为两部分:数组大小为size,设置数组下标left、mid、right,初始时分别为首元素下标0、中间元素下表(right-left)/2和最后元素下标 size-1,左部分为left-mid,右部分为 mid-right 设查找值为x,比较x与mid的大小。
42 0
|
11月前
二分查找法
二分查找法
|
算法
04查找算法:顺序查找法、二分查找法
04查找算法:顺序查找法、二分查找法
04查找算法:顺序查找法、二分查找法
二分法查找(非递归)
二分查找法是查找算法里面,经典又比较简单的一种。它适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再查找。 二分查找法的运行时间为对数时间O(㏒₂n),即查找到需要的目标位置最多只需要㏒₂n 步。假设从[0, 99]的队列(100 个数,即 n=100)中寻到目标数 30,则需要查找步数为㏒₂100 , 即最多需要查找 7 次( 26 < 100 < 27)。