찾기 (1) - 이분법 찾기

1406 단어 StringClass
이분법은 검색이 비교적 간단해서 데이터 집합이 질서정연해야 한다고 요구한다.매번 찾으려는 데이터 target과 데이터 집합 사이의 수치를 데이터 [center]와 비교하면 target코드:
package com.BinarySearch;

import java.util.Arrays;

public class BS {

	public static void main(String[] args) {

          int[] a={14,8,547,69,321,45,7,21,3,2,0,14,85,625,9};
          Arrays.sort(a);
          for(int i=0;i<a.length;i++)
        	  System.out.print(a[i]+" ");
          System.out.println();
          binarySearch(a, 321, 0, a.length-1);
	}
	
	/**
	 *  
	 * @param data     
	 * @param target   
	 * @param l        
	 * @param r        
	 */
	public static void binarySearch(int[] data, int target,int l,int r){
				 
		 if(l<=r){
			 int center=(l+r)/2;
			 if(target<data[center])
				 binarySearch(data, target, l, center-1);
			 else if(target>data[center])
				 binarySearch(data, target, center+1, r);
			 else
				 System.out.println(" "+target+", :"+center);
		 }				
	}
}

결과:
0 2 3 7 8 9 14 14 21 45 69 85 321 547 625 321을 찾았습니다.

좋은 웹페이지 즐겨찾기