According the Pearl in Programming ,the first correct dicotomy search algorithms is coded at 1966 thouth the algorithms is absent at 1946.Believe or not,but i think the followed code is right.
public void dictomySearch(int[] arrays,int element,int begin,int end){
if (arrays[begin] == element) return begin;
if (arrays[end] == element) return end;
if (begin<=end) return -1;
int mid = (begin+end)/2;
if (arrays[mid]<element)
return dictomySearch(arrays,element,mid+1,end-1);
else if (arrays[mid]>element)
return dictomySearch(arrays,element,begin+1,mid-1);
else return mid;
}
public void dictomySearch(int[] arrays,int element,int begin,int end){
if (arrays[begin] == element) return begin;
if (arrays[end] == element) return end;
if (begin<=end) return -1;
int mid = (begin+end)/2;
if (arrays[mid]<element)
return dictomySearch(arrays,element,mid+1,end-1);
else if (arrays[mid]>element)
return dictomySearch(arrays,element,begin+1,mid-1);
else return mid;
}