본문으로 건너뛰기

버그 제보

이상한 점을 알려 주시면 고칠게요. 지금 보고 있는 페이지와 브라우저 정보가 함께 담겨요.

페이지:

Algorithm

JavaScript 알고리즘: 문자열·탐색·정렬

추가
목차6개 항목
출처와 참고

Oleksii Trekhleb의 공개 저장소 「JavaScript Algorithms and Data Structures」를 주제별로 재구성한 노트다.

세 가지 문제를 구분한다

  • 문자열: 접두사·해시·편집 거리 등 문자열의 구조를 이용한다.
  • 탐색: 정렬 여부·분포·단조성에 따라 방문할 원소 수를 줄인다.
  • 정렬: 비교 기반인지, 입력 키의 범위를 활용하는지에 따라 비용이 달라진다.

원본 항목

Strings

항목수준핵심 개념코드·설명
Hamming Distance기초같은 길이에서 서로 다른 위치 수원본
Palindrome기초앞뒤가 같은 문자열 판별원본
Levenshtein Distance심화삽입·삭제·치환의 최소 편집 횟수원본
Knuth–Morris–Pratt Algorithm심화실패 함수를 활용하는 선형 시간 패턴 탐색원본
Z Algorithm심화접두사 일치 길이를 재사용하는 문자열 탐색원본
Rabin Karp Algorithm심화롤링 해시를 사용하는 문자열 탐색원본
Longest Common Substring심화연속된 최장 공통 문자열원본
Regular Expression Matching심화정규 패턴 조건과 문자열의 일치 판정원본

Searches

항목수준핵심 개념코드·설명
Linear Search기초앞에서부터 순차 탐색원본
Jump Search기초정렬 배열을 블록 단위로 건너뛰는 탐색원본
Binary Search기초단조 조건 또는 정렬 구간을 반씩 줄이는 탐색원본
Interpolation Search기초값의 분포를 이용해 예상 위치를 좁히는 탐색원본

Sorting

항목수준핵심 개념코드·설명
Bubble Sort기초이웃한 원소의 교환으로 정렬원본
Selection Sort기초선택한 최솟값을 앞쪽에 놓는 정렬원본
Insertion Sort기초정렬된 접두 구간에 값을 삽입원본
Heap Sort기초힙의 최댓값·최솟값을 반복 추출원본
Merge Sort기초분할해 정렬한 구간을 병합원본
Quicksort기초피벗을 중심으로 분할하는 정렬원본
Shellsort기초간격을 줄여 가며 수행하는 삽입 정렬원본
Counting Sort기초원소 값의 발생 빈도로 정렬원본
Radix Sort기초자리별 정렬을 반복원본
Bucket Sort기초값 구간별 버킷을 나누어 정렬원본

정렬 알고리즘 비교의 기준

방법일반적인 시간특징
삽입 정렬평균·최악 O(n²)이미 거의 정렬된 소규모 입력에 유리
병합 정렬O(n log n)안정 정렬 가능, 배열 구현은 별도 작업 공간 필요
퀵 정렬평균 O(n log n), 최악 O(n²)피벗·분할 방법에 따라 결과 달라짐
힙 정렬O(n log n)제자리 정렬 가능, 일반적으로 안정 정렬이 아님
계수 정렬O(n + k)키 범위 k에 비례하는 추가 공간 필요

기존 저장소 표에 등장하는 Big O는 수학적 증가율 분류이지 모든 구현에서 동일한 실제 수행 시간을 보장하는 수치가 아니다. 안정성·입력 분포·메모리를 함께 비교한다.

관련 노트: KMP, 이분 탐색, 기초 정렬, 병합·퀵 정렬, 시간 복잡도

원본 기록2

댓글

GitHub 계정으로 댓글을 남길 수 있어요.