一、线性查找
思想:如果想在一个数组中查找是否有某个元素,最容易想到的办法就是遍历数组,将数组中元素与想要查找的元素逐个对比,如果相等表示找到了,如果不等,则表示没找到。这就是线性查找的思想。
案例说明 | 定义数组:int[] arr1 = new int[]{34,54,3,2,65,7,34,5,76,34,67}; 查找元素5是否在上述数组中出现过?如果出现,输出对应的索引值。 |
代码实现 | public class LinearSearchTest { int[] arr1 = new int[]{34,54,3,2,65,7,34,5,76,34,67}; int target = 5; //查找方式:线性查找 //方式2: } if(i == arr1.length){ |
二、二分法查找
a)二分法查找的前提条件:数组元素有序排列。
b)实现步骤图示
案例说明 | 案例2:二分法查找 定义数组:int[] arr2 = new int[]{2,4,5,8,12,15,19,26,37,49,51,66,89,100}; |
public class BinarySearchTest { int[] arr2 = new int[]{2,4,5,8,12,15,19,26,37,49,51,66,89,100}; int target = 5; int head = 0;//默认的首索引
while(head <= end){ int middle = (head + end) / 2; if(target == arr2[middle]){ if(!isFlag){ |
三、小结
顺序查找:
> 优点:算法简单;
> 缺点:执行效率低。执行的时间复杂度O(N)
二分法查找:
> 优点:执行效率高。执行的时间复杂度O(logN)
> 缺点:算法相较于顺序查找难一点;前提:数组必须有序