有序字符串数组做查找


package demo;

public class P28 {
//一个有序字符串数组,其中散布着空字符串。编写程序,求指定字符串的索引
//因为字符串有序,所以采用二分法思路,规定中点为空串时右移
	public static void main(String[] args) {
		String[] arr = {"a","","ac","","ad","b","","ba"};
		System.out.println(indexOf(arr,"ac"));
	}

	static int indexOf(String[] arr,String target) {
		int begin=0;
		int end=arr.length-1;
		while(begin<=end) {
			int mid = begin+((end-begin)>>1);
			while(arr[mid].equals("")) {
				mid++;
				if(mid>end) 
					return -1;
			}
			
			if(arr[mid].compareTo(target)>0) {
				end=mid-1;
			}
			else if(arr[mid].compareTo(target)<0) {
				begin=mid+1;
			}
			else {
				return mid;
			}
		}
		return -1;
	}
	
}
posted @ 2022-05-02 19:43  fighterk  阅读(35)  评论(0)    收藏  举报