一维数组查找算法

首先应该是排好序的数组

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

 

posted @ 2019-08-07 09:42  水果、、  阅读(509)  评论(0编辑  收藏  举报