数组的二叉查找算法

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

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

猜你喜欢

转载自1943068620.iteye.com/blog/2369884