[알고리즘] 이진탐색(binary search) 기본개념 + js코드

2022. 2. 18. 18:55·과거의 이력/기본개념 (손필기)

이진탐색

 

 

240,000 개의 값이 있을때

단순탐색은 최대 240,000번 추측해야하지만,

이진탐색은 최대 18번의 추측으로 정답을 찾아낼 수 있다.

 

크기가 커질수록 단순탐색과는 비교도 안될정도의 빠른속도로 정답을 찾아낼 수 있다.

단, 이진탐색은 원소들이 정렬되어 있어야만 사용할 수 있다.

 

 

 

javascript로 구현한 이진탐색

function binarySearch (target, dataArray) {
    let low = 0;
    let high = dataArray.length - 1;
    
    while (low <= high) { // 탐색범위가 하나가 될때까지 루프를 실행시킨다.
        let mid = Math.floor((low + high) / 2); // js는 low+high가 홀수일 경우 정수로 내림합니다!
        let guess = dataArray[mid];
        
        if (guess === target) { // 추측값이 정답일 경우
        	return guess;
        } else if (guess > target) { // 추측값이 정답보다 클 경우
        	high = mid - 1;
        } else { // 추측값이 정답보다 작을 경우
        	low = mid + 1;
        }
    }
    return undefined;
}

 

 

 


 

 

단순탐색과 이진탐색 옆에 써있는 저것은? 빅오표기법 ㅎㅎ!

 

https://pro-jm.tistory.com/56

 

[빅오표기법] 빅오표기법이란? (Big O notation)

.

pro-jm.tistory.com

 

'과거의 이력 > 기본개념 (손필기)' 카테고리의 다른 글

[재귀] 재귀란? (반복문 vs 재귀 누가더 성능이좋은가!)  (1) 2022.02.24
[정렬] 선택정렬 자바스크립트로 로직 구현!  (0) 2022.02.21
[알고리즘] 배열과 연결리스트의 차이? (Array vs Linked List)  (0) 2022.02.19
[빅오표기법] 빅오표기법이란? (Big O notation)  (0) 2022.02.18
'과거의 이력/기본개념 (손필기)' 카테고리의 다른 글
  • [재귀] 재귀란? (반복문 vs 재귀 누가더 성능이좋은가!)
  • [정렬] 선택정렬 자바스크립트로 로직 구현!
  • [알고리즘] 배열과 연결리스트의 차이? (Array vs Linked List)
  • [빅오표기법] 빅오표기법이란? (Big O notation)
정많이 정만이
정많이 정만이
jeongmany
  • 정많이 정만이
    정많이 정만이
    정많이 정만이
  • 전체
    오늘
    어제
    • 분류 전체보기 (80)
      • 과거의 이력 (71)
        • CS (12)
        • 프론트엔드 (4)
        • javascript (21)
        • Vue.js (7)
        • bootstrap (1)
        • [그리드] ag-grid (3)
        • [그리드] vue-grid-layout (1)
        • HTML_CSS (5)
        • NPM (1)
        • [차트]highcharts (0)
        • JAVA (9)
        • 백엔드 (1)
        • 기본개념 (손필기) (5)
        • 프로그래머스 (1)
      • 알고리즘 (6)
      • 통계 (9)
        • 통계지식 (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    bootstrap
    개발자
    vue
    ubuntu설치
    HTML
    webpack.config.js
    vuejs
    VirtualBox
    반복문
    Webpack
    vue.config.js
    공유메모리
    알고리즘
    객체
    ubuntu
    우분투
    JavaScript
    java
    자바스크립트
    ag-grid
    js map
    ES6
    CSS
    코딩테스트
    selectbox
    js
    cs
    vue.js
    버추얼박스
    aggrid
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
정많이 정만이
[알고리즘] 이진탐색(binary search) 기본개념 + js코드
상단으로

티스토리툴바