数组的二叉查找算法
程序员文章站
2022-03-21 11:07:55
...
从数组中查找特定数据的最简单方法就是遍历数组中的所有元素,这种方法也叫线性查找。线性查找适用于小型数据或未排序的数组。
1.定义数组; 2.调用方法,参数传递; 3.判断,return
这里涉及到参数传递;局部变量作为参数传递,传递时强调引用类型
import java.util.Scanner; public class indexof { public static void main(String[] args) { // TODO Auto-generated method stub // Scanner scan= new Scanner(System.in); int[] a = new int[]{4,2,3}; System.out.println(indexOf(a,2)); } private static int indexOf(int[] a, int value) { // TODO Auto-generated method stub for(int i=0;i<a.length;i++){ if(a[i]==value) return i; } return -1; } }
对于大型已排序好的数组,可以采用高效的二叉查找算法;该算法找到数组中位于中间的元素,若等于中间的元素,就返回该元素的索引,入则,将问题简化为查找已排序数组的一半元素。
1.定义数组; 2.调用方法;3.输出
注意:循环用while,可以判断;此外while里面的条件要是low<=high,不要把等于号去掉了,会没办法停止循环;此外要注意三个判断语句时,要注意顺序
public class split { public static void main(String[] args) { // TODO Auto-generated method stub int[] a = new int[]{2,3,5,6,9}; System.out.println(indexOf(a,3)); } private static int indexOf(int[] a, int value) { // TODO Auto-generated method stub int low=0; int high=a.length-1; int middle; while(low<=high){ middle=(high+low)/2; if(value==a[middle])return middle; if(value<a[middle]){ high=middle-1; }else{ low=middle+1; } } return -1; } }
上一篇: 数组的二叉查找算法