欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组的二叉查找算法

程序员文章站 2022-03-21 11:08:01
...

从数组中查找特定数据的最简单方法就是遍历数组中的所有元素,这种方法也叫线性查找。线性查找适用于小型数据或未排序的数组。

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;
	}
}