선형검색, 이진검색 (JS)

박찬영·2023년 12월 21일
post-thumbnail

선형 검색

선형 검색(Linear Search)은 원하는 값을 찾기 위해 리스트나 배열을
처음부터 끝까지 순차적으로 탐색하는 검색 알고리즘입니다.

이 방법은 간단하고 직관적 이지만, 리스트의 크기가 큰 경우에는 효율이 낮을 수 있습니다.
indexOf, includes, find, findIndex 등등이 이와 같은 방법을 사용합니다.

이진 검색

이진 검색(Binary Search)은 정렬된 배열 또는 리스트에서 특정한 원소를 찾기 위해
사용 되는 효율적인 검색 알고리즘 중 하나 입니다.

이진 검색은 배열을 반으로 나누어 탐색하는 방식으로 동작하며, 원하는 값이 발견될 때까지 검색을 반복합니다.
이진 검색은 분류된 배열을 대상으로만 작동 하므로 데이터가 분류 되어 있어야 한다.
작은 수 -> 큰수 순으로 되어 있거나 알파벳 순으로 분류되어 있거나 해야 합니다.

이진 검색은 O(log n) 입니다.

예를 들어 배열의 길이가 32 라면 n 은 32 이기 때문에 O( log2 32) 는
최대 5 번 반복합니다.
배열의 길이가 16 이라면 n 이 16이기 때문에 O( log2 16) 은 최대 4번 반복합니다.
O(log n) 은 O(1) 이랑 거의 차이가 없습니다.

이진 검색 예시 코드

function BinerySearch(arr,num) {
	let start = 0;
  	let end = arr.length - 1;
  	let middle = Math.floor((start + end) / 2);
  	while(arr[middle] !== num && start <= end) {
    	if(arr[middle] > num){
        	end = middle - 1;
        } else if(arr[middle] < num){
        	start = middle + 1;
        }
        middle = Math.floor((start + end) / 2);
    }
  	if(arr[middle] === num) {
    	return middle
    }
    return -1;
}
profile
오류는 도전, 코드는 예술

0개의 댓글