binary Search 2 분 검색 - Javascript 구현

2054 단어 JavaScript
아주 오래 전에 나 는 이분법 에 관 한 박문 을 한 편 썼 다. 자 바스 크 립 트 빠 른 배열 과 네 이 티 브 sort 테스트그 때 는 이분법 으로 빠 른 순 서 를 매 겼 는데 사실은 이번 사고 와 대체로 비슷 했다.2 분 검색 의 가장 중요 한 조건 은 배열 을 작은 것 부터 큰 것 까지 순서대로 정렬 해 야 찾 을 수 있다 는 것 이다.
함께 대체적인 사 고 를 생각해 보 자.
1. binarySearch          :          ,          ,       。
2.             ,   ,          ,    。    ,     
3.    ,       ,       ,            ,        。  ,           ,     。
4.      ,             ,  -1。

이 위조 코드 는 여전히 좀 난잡 하 게 쓰 여 졌 다.가장 중요 한 사상 은 역시 귀속 에 있다.상술 한 코드 를 함께 실현 합 시다.제 가 사용 하 는 것 은 coffee Script 로 이 루어 진 것 입 니 다. 어떤 부분 을 제외 하고 제 가 가리 키 는 것 은 대체적으로 알 아 볼 수 있 습 니 다.coffee Script 에 관심 이 있 는 학생 은 걸음 을 옮 길 수 있 습 니 다. CoffeeScript 중국어커피 의 블록 급 판단 은 들 여 쓰기 에 달 려 있다 는 점 을 강조해 야 한다.따라서 사용 할 때 빈 칸 과 Tab 를 들 여 쓰 지 마 세 요.
binarySearch = (dataArr, target, start = 0, end = dataArr.length-1)->
  #     ,    : start = 0, end = dataArr.length - 1
  
  middle = parseInt((start + end) / 2) #      
  return -1 if middle == start or middle == end #     
  
  if(dataArr[middle] == target)
    return middle  #     

  if(target < dataArr[middle])
    return binarySearch(dataArr, target, 0, middle-1)
  else
    return binarySearch(dataArr, target, middle+1, end)


생각해 보 세 요. 커피 를 써 본 적 이 없 는 친구 들 을 위해 서 는 컴 파일 된 Js 도 함께 올 려 놓 으 세 요.
  var binarySearch = function(dataArr, target, start, end) {
    var middle;
    if (start == null) {
      start = 0;
    }
    if (end == null) {
      end = dataArr.length - 1;
    }
    middle = parseInt((start + end) / 2);
    if (middle === start || middle === end) {
      return -1;
    }
    if (dataArr[middle] === target) {
      return middle;
    }
    if (target < dataArr[middle]) {
      return binarySearch(dataArr, target, 0, middle - 1);
    } else {
      return binarySearch(dataArr, target, middle + 1, end);
    }
  };

좋은 웹페이지 즐겨찾기