JavaScript의 일반적인 검색 알고리즘
검색 알고리즘부터 시작하겠습니다!
선형 검색
선형 검색은 배열과 값을 받아들이고 해당 값이 존재하는 인덱스를 반환하는 일반적인 검색 알고리즘입니다. 해당 값이 없으면 함수는 -1을 반환합니다. 구현:
코드는 다음과 같습니다.
function linearSearch(arr, val){
for(let i = 0; i < arr.length; i++){
if(arr[i] === val) return i;
}
return -1;
}
이 함수의 평균 및 최악의 시간 복잡도는 O(N)이고 최상의 시간 복잡도는 O(1)입니다. 우리의 다음 검색 알고리즘은 이 시간 복잡성을 개선할 것입니다.
이진 검색
이진 검색은 정렬된 배열에서만 작동한다는 경고와 함께 선형 검색보다 훨씬 효율적일 수 있는 알고리즘입니다. 구현:
코드는 다음과 같습니다.
function binarySearch(arr, elem) {
let start = 0;
let end = arr.length - 1;
let middle = Math.floor((start + end) / 2);
while(arr[middle] !== elem && start <= end) {
if(elem < arr[middle]) end = middle - 1;
else start = middle + 1;
middle = Math.floor((start + end) / 2);
}
return arr[middle] === elem ? middle : -1;
}
기억하다! 이 방법은 정렬된 배열에서만 작동합니다! 그러나 정렬된 배열이 있는 경우 선형 검색과 비교할 때 시간 복잡도가 크게 향상됩니다. 최악의 평균 시간 복잡도는 O(log n)이고 최상의 경우는 O(1)입니다.
순진한 문자열 검색
내가 다룰 최종 검색 알고리즘은 순진한 문자열 검색입니다. 이 알고리즘은 더 큰 문자열 내에서 패턴을 찾는 데 유용합니다. 예를 들어 문자열 "AABAACAADAABAABA"에 "AABA"가 몇 번이나 나타나는지 찾을 수 있습니다. 구현:
코드는 다음과 같습니다.
function naiveSearch(long, short){
let count = 0;
for(let i = 0; i < long.length; i++){
for(let j = 0; j < short.length; j++){
if(short[j] !== long[i+j]) break;
if(j === short.length - 1) count++;
}
}
return count;
}
순진한 문자열 검색을 위한 최상의 시간 복잡도는 O(n)입니다. 최악의 경우는 O(m*(n-m+1))입니다. This author에서는 이 고유한 시간 복잡도에 대해 자세히 설명합니다.
이것은 JavaScript의 기본 검색 알고리즘에 대한 빠른 가이드였습니다. 나는 여전히 이 자료를 배우고 있으며 의견과 비평을 환영합니다!
출처
Reference
이 문제에 관하여(JavaScript의 일반적인 검색 알고리즘), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hannahglazier/common-searching-algorithms-in-javascript-207e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)