Rubyは二分法検索を実現

1090 ワード

def binary_search
  a = [10,57,68,70,78,90,122]
  search = 78
  index = 0 , start_index = 0 , end_index = a.length
  while(true)
    index = start_index + ((end_index - start_index) / 2)
    start_index = index if a[index] < search
    end_index = index if a[index] > search
    break if a[index] == search
   end
   puts  "find by"+ index
end

 
Java
 
 
public static void main(String[] args) {
	        // sorted array
	        int[] a = {10,57,68,70,78,90,122};
	        //
	        int search = 78;
	        int index = 0;
			int start = 0;
			int end = a.length;
			while(true){
				//get index
				index = start+((end-start)/2);
				if(a[index]<search){
					start = index;
				}else if(a[index]>search){
					end = index;
				}else{
					break;
				}
			}
	        System.out.println("find by "+ index);
	 }