Algorithm
-
알고리즘, Sort, Insertion SortData Structure & Algorithm 2024. 6. 18. 17:32
삽입 정렬(Insertion Sort)은 간단하고 직관적인 정렬 알고리즘 중 하나로, 배열을 부분적으로 정렬된 상태로 유지하면서 새로운 요소를 올바른 위치에 삽입하는 방식입니다. 삽입 정렬은 작은 데이터 세트에 대해서는 효율적이고, 거의 정렬된 배열에 대해서도 효율적입니다.기본 개념삽입 정렬의 기본 개념은 다음과 같습니다:부분 정렬 유지: 배열의 첫 번째 요소는 이미 정렬된 상태로 간주하고, 두 번째 요소부터 시작하여 배열을 부분적으로 정렬된 상태로 유지합니다.삽입 위치 찾기: 현재 요소를 이미 정렬된 부분 배열과 비교하여 적절한 위치를 찾습니다.삽입: 현재 요소를 올바른 위치에 삽입합니다.반복: 배열의 모든 요소에 대해 이 과정을 반복합니다.예제다음은 자바스크립트로 구현한 삽입 정렬의 예제입니다.fun..
-
알고리즘, Sort, Selection SortData Structure & Algorithm 2024. 6. 18. 17:28
선택 정렬(Selection Sort)은 단순한 정렬 알고리즘 중 하나로, 리스트에서 가장 작은 요소를 찾아 맨 앞의 요소와 교환하는 과정을 반복하여 정렬하는 방식입니다. 선택 정렬은 이해하기 쉽고 구현이 간단하지만, 시간 복잡도가 O(n^2)으로 비효율적입니다.기본 개념선택 정렬의 기본 개념은 다음과 같습니다:최소값 찾기: 리스트에서 현재 위치부터 끝까지 탐색하여 가장 작은 요소를 찾습니다.교환: 가장 작은 요소를 현재 위치의 요소와 교환합니다.반복: 리스트의 모든 위치에 대해 이 과정을 반복합니다.예제다음은 자바스크립트로 구현한 선택 정렬의 예제입니다.function swap(arr, idx1, idx2) { let temp = arr[idx1]; arr[idx1] = arr[idx2]; arr..
-
알고리즘, Sort, Bubble SortData Structure & Algorithm 2024. 6. 18. 17:24
버블 정렬(Bubble Sort)은 간단한 정렬 알고리즘 중 하나로, 인접한 두 요소를 비교하여 필요에 따라 위치를 바꾸면서 리스트를 정렬하는 방식입니다. 버블 정렬의 이름은 가장 큰 요소가 반복적으로 리스트의 끝으로 "부풀어 오르는" 과정에서 유래되었습니다.기본 개념버블 정렬의 기본 개념은 다음과 같습니다:비교 및 교환: 리스트의 처음부터 시작하여 인접한 두 요소를 비교합니다. 만약 첫 번째 요소가 두 번째 요소보다 크면 두 요소의 위치를 바꿉니다.반복: 리스트 끝까지 이 과정을 반복합니다. 이 과정을 반복하면 가장 큰 요소가 리스트의 끝으로 이동합니다.반복 감소: 리스트 끝에 가장 큰 요소가 고정되면 다음 반복에서는 마지막 요소를 제외한 나머지 요소를 비교합니다.정렬 완료: 더 이상 교환이 필요하지 ..
-
알고리즘, Search, Binary SearchData Structure & Algorithm 2024. 6. 16. 21:54
이진 탐색(Binary Search)은 효율적인 검색 알고리즘으로, 정렬된 배열이나 리스트에서 특정 요소를 찾기 위해 사용됩니다. 이진 탐색은 매번 검색 범위를 반으로 줄이기 때문에 시간 복잡도가 O(log n)으로 매우 효율적입니다.기본 개념이진 탐색의 기본 개념은 다음과 같습니다:중간 요소 선택: 검색 범위의 중간 요소를 선택합니다.비교: 중간 요소와 검색하려는 요소를 비교합니다.일치하는 경우: 요소를 찾으면 해당 요소의 인덱스를 반환합니다.작은 경우: 검색하려는 요소가 중간 요소보다 작으면, 검색 범위를 중간 요소의 왼쪽 부분으로 줄입니다.큰 경우: 검색하려는 요소가 중간 요소보다 크면, 검색 범위를 중간 요소의 오른쪽 부분으로 줄입니다.반복: 검색 범위가 없을 때까지 1~2번 과정을 반복합니다.찾..
-
알고리즘, Search, Naive String SearchData Structure & Algorithm 2024. 6. 16. 21:54
Naive String Search는 문자열 내에서 특정 패턴을 찾기 위한 단순하고 직관적인 검색 알고리즘입니다. 이 알고리즘은 텍스트의 각 위치에서 패턴이 일치하는지 확인하는 방식으로 동작합니다. 이 과정은 매우 직관적이지만, 비효율적일 수 있습니다. 특히 긴 텍스트와 패턴의 경우 더 효율적인 알고리즘을 사용하는 것이 좋습니다.기본 개념Naive String Search의 기본 개념은 다음과 같습니다:텍스트의 각 위치에서 패턴 확인: 텍스트의 첫 번째 문자부터 시작하여, 패턴의 길이만큼의 문자가 패턴과 일치하는지 확인합니다.일치 여부 판단: 일치하는 경우 해당 위치를 기록하고, 일치하지 않는 경우 다음 위치로 이동하여 다시 확인합니다.반복: 텍스트의 끝까지 이 과정을 반복합니다.예제다음은 자바스크립트로..
-
알고리즘, Search, Linear SearchData Structure & Algorithm 2024. 6. 16. 21:52
선형 검색(Linear Search)은 가장 간단한 검색 알고리즘 중 하나로, 배열이나 리스트와 같은 데이터 구조에서 특정 요소를 찾기 위해 처음부터 끝까지 순차적으로 요소를 하나씩 비교하는 방식입니다. 선형 검색은 구현이 매우 간단하지만, 효율성이 떨어지기 때문에 작은 데이터셋에서 주로 사용됩니다.기본 개념선형 검색의 기본 개념은 다음과 같습니다:순차적으로 비교: 리스트의 첫 번째 요소부터 마지막 요소까지 순차적으로 비교합니다.일치하는 요소 찾기: 검색하려는 요소와 일치하는 요소를 찾으면 해당 요소의 인덱스를 반환합니다.일치하는 요소가 없는 경우: 리스트의 모든 요소를 비교한 후에도 검색하려는 요소를 찾지 못하면 -1을 반환합니다.예제다음은 자바스크립트로 구현한 선형 검색의 예제입니다.function ..