Java 이분 검색 알고리즘 실례 분석 실현

본고는 자바 구현 이분 검색 알고리즘을 실례로 다루고 있다.여러분에게 참고할 수 있도록 나누어 드리겠습니다.구체적으로 다음과 같습니다.
1. 전제: 2분 찾기의 전제는 찾아야 할 수조가 이미 정렬되어 있어야 한다는 것이다. 우리의 실현은 기본적으로 오름차순으로 되어 있다
2. 원리: 수조를 세 부분으로 나누고 그 다음은 중치(이른바 중치는 수조의 중간 위치의 그 값) 전, 중치, 중치 후이다.찾으려는 값과 그룹의 중치를 비교하고, 중치보다 작으면 중치 앞에서 찾고, 중치보다 크면 중치 뒤에서 찾고, 중치와 같을 때 직접 되돌려줍니다.그리고 순서대로 하나의 귀속 과정으로 앞부분이나 뒷부분을 계속 세 부분으로 분해한다.잘 묘사되지 않았을 수도 있으니 이해하지 못하면 인터넷에서 찾을 수 있다.묘사에서 알 수 있듯이 이 알고리즘은 귀속으로 실현하기에 적합하고 귀속으로 할 수 있는 것은 모두 순환으로 실현할 수 있다.그래서 우리의 실현은 귀속과 순환 두 가지로 나뉘어 코드에 따라 알고리즘을 이해할 수 있다
구현 코드:

public class BinarySearch {
 public static void main(String[] args){
 int searchArr[] = new int[1000000];
 for(int i=0;i<1000000;i++){
  searchArr[i]=i;
 }
   System.out.println(binSearch(searchArr,0,searchArr.length-1,99));
    System.out.println(binSearch(searchArr,99));
  }
// 
  public static int binSearch(int arr[], int start,int end,int sear){
    int mid = (end-start)/2 + start;
    if(sear==arr[mid]){
      return mid;
    }
    if(start>=end){
      return -1;
    }else if(sear < arr[mid]){
      return binSearch(arr,0,mid-1,sear);
    }else if(sear >arr[mid]){
      return binSearch(arr,mid+1,end,sear);
    }
    return -1;
  }
// 
  public static int binSearch(int arr[],int key){
    int mid = arr.length/2;
    int start = 0;
    int end = arr.length-1;
    while(start<=end){
      mid = (end-start)/2+start;
      if(key ==arr[mid]){
        return mid;
      }else if(key <= arr[mid]){
        end = mid-1;
      }else if(key >=arr[mid]){
        start = mid+1;
      }
    }
    return -1;
  }
효율성 비교:
순환 이분 찾기 알고리즘의 효율은 귀속 이분 찾기 알고리즘보다 높다
본고에서 기술한 것이 여러분의 자바 프로그램 설계에 도움이 되기를 바랍니다.

좋은 웹페이지 즐겨찾기