目录
计算机中的数据结构
在计算机科学中,数据结构指的是组织喝存储数据的方式和方法,数据是计算机中非常基本的一种小单位,是计算机程序的基本组成部分,在计算机中用于计算、存储和传输。我的理解是:数据结构就是以多种方式对这些基本数据进行管理的方式,比如不同的建筑物,设计师设计出不同的建筑结构对基本的建筑材料进行规划一样。
数据在计算机中以二进制形式存储和处理,使用比特(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+"不在数组中");
}
}
}
总结
本文深入讲解了二分查找算法,从数学角度解释了其原理,并给出了实现的代码示例。通过折半查找的方式,二分查找能够快速定位有序数组中的目标元素。此外,还提到了二分查找对数组有序性的要求,必须先进行排序操作才能使用该算法。通过学习本文,读者能够理解二分查找算法的原理和使用方法,并能够在实际开发中应用二分查找来提高查找效率。