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
- Apache ab
- node.js ec2 ip접속
- node.js ec2
- sms 휴대폰 인증
- sms 샌드박스
- sql 데이터 추가
- ab 벤치마크
- filezilla
- html tag
- sns 샌드박스 종료
- npm 전역 설치 삭제
- aws sdk v3
- Apache Benchmark
- node.js ec2 배포
- sql 데이터 삽입
- 이것이 자바다
- node.js
- AWS SDK for JavaScript v3
- 스트레스툴
- Primary key(기본 키)
- SMS sandbox
- 자바
- npm 글로벌 설치 삭제 했는데 실행됨
- Foreign Key (외래 키)
- HTML 태그
- PostgreSQL CAST
- Java
- COALESCE함수
- HTML
- EC2
Archives
- Today
- Total
망각에 재주 있는 나를 위해 기록하는 곳.
이진검색(Binary Search) 본문
이진검색은 정렬된 배열을 대상으로 작동함.
divide and conquer : 중간점 기준으로 찾는 값이 오른쪽, 왼쪽 어디에 있는지 찾는다. 찾는 값이 포함되지 않는 부분은 버림. 이런 방식으로 범위를 좁혀가며 원하는 값을 찾는다. (해당 배열은 정렬되어 있어야 한다.)
Binary Search Pseudocode:
- 시작점(start)과 끝점(end)을 설정한다.
- 중간점(middle)을 찾는 코드를 만든다.
- num이 배열의 중간점과 같지 않고 시작점이 끝점보다 작을 경우에 아래의 과정을 반복한다.
- 만약 num이 중간점 보다 작을 경우, 끝점을 중간점-1로 변경한다.
- 만약 num이 중간점 보다 클 경우, 시작점을 중간점+1로 변경한다.
- 중간점은 반복적으로 갱신한다.
- 마지막으로 중간점이 찾는값과 같을 경우 찾는값 반환.
- 그렇지 않으면 해당 값은 배열에 없으므로 -1반환.
function binarySearch(arr, num){
let start = 0;
let end = arr.length - 1;
let middle = Math.floor((start + end) / 2);
while (arr[middle] !== num && start <= end) {
if(num < arr[middle]) end = middle - 1;
else start = middle + 1;
middle = Math.floor((start + end) / 2);
}
return arr[middle] === num ? middle : -1;
}
'자료구조&알고리즘' 카테고리의 다른 글
정렬(sorting) (0) | 2023.04.10 |
---|---|
나이브 문자열 검색(Naive String Search) (0) | 2023.04.10 |