Java描述数据结构之基础篇——二分查找(1)

目录

计算机中的数据结构

常见的数据结构

二分查找 

基本思想

代码实现

总结

计算机中的数据结构

       在计算机科学中,数据结构指的是组织喝存储数据的方式和方法,数据是计算机中非常基本的一种小单位,是计算机程序的基本组成部分,在计算机中用于计算、存储和传输。我的理解是:数据结构就是以多种方式对这些基本数据进行管理的方式,比如不同的建筑物,设计师设计出不同的建筑结构对基本的建筑材料进行规划一样。

       数据在计算机中以二进制形式存储和处理,使用比特(bit)作为最小的存储单位,而设计出不同的数据结构就是对这些数据元素进行关系的建立不同的表示方法便于程序中高效地执行插入删除查找和修改等操作

常见的数据结构


二分查找 

基本思想

       先从数学角度来理解二分查找,懂了基本思想我们再从代码的角度介绍。二分查找是一种在有序数组中查找特定元素的算法,这里需要注意,如果是无序数组,则需要先对数组进行排序操作,这样才能正常进行二分查找算法。其基本思想如下:


1.确定左右边界——首先,将有序数组的起始位置和结束位置确定为查找范围的左右边界。

2.确定中间位置——然后,计算查找范围中间位置的索引。

       具体操作可以通过将左边界和右边界的位置相加,然后除以2得到中间位置。即中间位置=(左边界+右边界)/2。如果遇到除法得到的数不是整数,采用向下取整,比如3.5,我们取3。

3.元素比较——将目标元素与中间位置的元素进行比较:


4.重复1、2、3步骤——缩小查找范围,直到找到目标元素或者确定目标元素不存在于数组中。循环的终止条件是左边界开始大于右边界。

5.如果循环结束后仍未找到目标元素,表示目标元素不存在于数组中。

代码实现

有了基本思想,我们需要把思想移植到代码中,进行实际操作。有以下几个关键步骤

1.定义i和j这两个变量分别为数组的左边界和右边界

2.设置循环语句,里面嵌套判断语句,用于比较中间元素和目标元素,并设置对应的返回值

3.在另一个判断语句中用我们定义的变量result来判断比较的结果

package BS;

public class BinarySearch01 {
    public static int BinarySearch011(int[] a, int target) {
        int i=0,j=a.length-1;//定义二分查找的两端
        while(i<=j){
            int m=(i+j)>>>1;
            if(target<a[m]){
                j=m-1;
            }else if(target>a[m]){
                i=m+1;
            }else {
                return m;
            }
        }
        return -1;
    }
    public static void main(String[] args){
        int[] arr={5,7,8,10,11,15,16,18,19,20};
        int target=11;
        int result=BinarySearch011(arr,target);
        if(result!=-1){
            System.out.println("元素"+target+"在数组中");
        }else{
            System.out.println("元素"+target+"不在数组中");
        }
    }
}


总结

       本文深入讲解了二分查找算法,从数学角度解释了其原理,并给出了实现的代码示例。通过折半查找的方式,二分查找能够快速定位有序数组中的目标元素。此外,还提到了二分查找对数组有序性的要求,必须先进行排序操作才能使用该算法。通过学习本文,读者能够理解二分查找算法的原理和使用方法,并能够在实际开发中应用二分查找来提高查找效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值