一维数组查找算法

首先应该是排好序的数组

public class TestSearch {
	public static void main(String[] args) {
		int a[] = {1,3,6,8,9,10,12,18,20,34};
		int i = 12;
		System.out.println(binarySearch(a,i));
	}
	
	/*public static int search(int[]a,int num) {
		for(int i = 0;i<a.length;i++) {
			if(a[i]=num) {
				return i;
			}
		}
		return -1;
	}*/
	//二分法查找
	public static int binarySearch(int []a,int num) {
		if(a.length ==0) return -1;
		
		int startPos = 0;
		int endPos = a.length-1;
		int m = (startPos+endPos) / 2;
		while(startPos<=endPos) {
			if(num == a[m]) return m;
			if(num > a[m]) {
				startPos = m+1;
			} 
			if(num < a[m]) {
				endPos = m-1;
			}
			m = (startPos + endPos) / 2;
		}
		return -1;
	}
}
原文地址:https://www.cnblogs.com/lsswudi/p/11313285.html