Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- React
- Array
- 달빛캠퍼스
- 재귀
- Java
- 카카오블라인드코딩테스트
- 백준
- programmers
- dfs
- 달빛클럽 1기
- SoftwareExpertAcademy
- React.js
- 알고리즘
- 노마드코더 강의
- SWEA
- 프로그래머스
- 완전탐색
- 달빛클럽
- BOJ
- Stack
- HashMap
- 노마드코더
- 달빛클럽1기
- 리액트
- ReactJS로 영화 웹 서비스 만들기
- 경제공부
- Algorithm
- JPA
- 자바
- 인플레이션에서 살아남기
Archives
- Today
- Total
th42500의 TIL
[Java] 이진 탐색(Binary Search) 본문
프로그래머스의 문제를 풀다가 새롭게 알게된 이진 탐색에 대해 정리하였다.
이진 탐색(Binary Search)이란?
👉 데이터가 정렬되어 있는 상태에서 원하는 값을 찾아내는 알고리즘
👉 대상 데이터의 중앙값과 찾고 싶은 대상을 비교하여 데이터의 크기를 절반씩 줄여가며 대상을 찾음
👉 정렬 데이터에서 원하는 데이터를 탐색할 때 사용하는 알고리즘
이진 탐색의 시간복잡도
👉 O(logN)
이진 탐색 알고리즘 탐색 과정
해당 알고리즘은 반드시 정렬된 상태에서 진행하여야 함
1️⃣ 현재 데이터 셋의 중앙값(mid) 선택
2️⃣ 중앙값 > 찾고 싶은 대상 값이라면 중앙값 기준으로 왼쪽 데이터셋 선택
3️⃣ 중앙값 < 찾고 싶은 대상이라면 중앙값 기준으로 오른쪽 데이터셋 선택
4️⃣ 중앙값 == 찾고 싶은 대상일때까지 1️⃣~3️⃣의 과정을 반복
만약, 오름차순으로 정렬되어 있다면 위의 1️⃣~4️⃣의 과정을 그대로 하면 되고,
내림차순으로 정렬되어 있다면 조건을 반대로 하여 과정을 반복하면 됨
'Algorithm > Concept' 카테고리의 다른 글
피보나치 수열 & 메모이제이션(memoization) (0) | 2022.04.18 |
---|---|
조합 (Combination) (0) | 2022.03.14 |
BFS (Breadth-First Search) (0) | 2021.12.25 |
배열(Array) (0) | 2021.12.22 |
DFS (Depth-First Search) (0) | 2021.12.22 |
Comments