본문 바로가기

알고리즘/분할정복

(4)
이진 탐색(Binary Search) 이진 탐색(Binary Search)은 정렬된 배열에서 원하는 값을 효율적으로 찾는 알고리즘입니다. 배열의 중간 요소와 목표 값을 비교하여, 목표 값이 더 작으면 왼쪽 절반, 더 크면 오른쪽 절반을 선택하여 검색을 반복합니다. 최악의 경우 시간 복잡도는 O(log⁡n)입니다.「이진 탐색의 동작 과정」1. 분할 과정 (Divide)우선 알아야할점은 배열은 항상 정렬 되어있어야 한다는 것입니다. 첫번째 분할과정에서는 현재 배열의 중간 원소를 선택합니다. 그 후 중간 원소와 찾고자 하는 값을 비교합니다.-IF 찾고자 하는 값이 중간 요소보다 작으면 : 배열에서 중간 원소의 왼쪽 절반을 선택합니다.-IF 찾고자 하는 값이 중간 요소보다 크면 : 배열에서 중간 원소의 오른쪽 절반을 선택합니다.12345 위 배열에..
퀵 정렬(Quick Sort) 퀵 정렬(Quick Sort)은 분할 정복 알고리즘의 일종으로, 배열을 임의의 기준으로 두 부분으로 나눈 후 각각을 재귀적으로 정렬하는 방식입니다. 평균 시간 복잡도는 O(nlog⁡n)이며, 최악의 경우 O(n ² )이 될 수 있습니다. 일반적으로 빠른 수행 속도로 널리 사용되는 정렬입니다.「퀵 정렬의 동작 과정」1. 분할 과정 (Divide) 퀵 정렬의 첫번째 단계에서는 "피벗(pivot)"을 정해 이를 통해 구간을 나누는 과정입니. 피벗은 일반적으로 배열의 첫 번째 원소, 마지막 원소, 또는 중앙값을 선택합니다. 피벗을 정한뒤, 배열의 원소들을 피벗을 기준으로 두 부분으로 나눕니다. 피벗보다 작은 원소들은 피벗의 왼쪽에, 피벗보다 큰 원소들은 피벗의 오른쪽에 위치하도록 합니다. -처음 주어진 배열[3..
병합(합병) 정렬(Merge Sort) 병합정렬(Merge-sort)은 퀵 정렬(Quick Sort)와 같이 분할정복 알고리즘을 이용한 정렬 알고리즘중 하나입니다. 선택정렬같은 O(N²)의 느린 정렬 알고리즘과 다르게 병합정렬은 시간복잡도 O(NlogN)의 빠른 정렬 알고리즘입니다.「병합 정렬의 동작 과정」1. 분할 과정 (Divide)  병합정렬의 첫 번째 단계인 분할과정에서는 배열을 가능한 한 작게 나눕니다. 이 단계에서는 배열을 중간을 기준으로 두 개의 하위 배열로 분할합니다. 이 과정을 배열에 원소가 하나가 될때까지 계속 반복하면 됩니다. -처음 주어진 배열 ↓ [38, 27, 43, 3, 9, 82, 10] -첫번째 분할 ↓ [38, 27, 43], [3, 9, 82, 10] -두번째 분할  [38, 27], [43],  [3, 9]..
분할 정복(Divide and conquer) 알고리즘 1. 분할정복 알고리즘 분할정복(Divide and Conquer) 알고리즘은 여러알고리즘의 기본이 되는 방법중 하나로 복잡한 문제를 더 단순하고 작은 문제로 나누어 해결하는 방식으로 이루어집니다. 잘 알려진 예로는 병합 정렬(Merge Sort)과 퀵 정렬(Quick Sort)등이 있습니다.  2. 분할 정복 알고리즘의 과정 분할정복 알고리즘의 설계 과정은 세 단계로 이루어집니다. 이 각각의 과정은 분할(Divide), 정복(Conquer), 결합(Combine)이라고부릅니다. 1. 분할(Divide): 해결하려는 문제를 더 작은 하위 문제로 나누는 과정. 2. 정복(Conquer): 나눈 하위 문제를 재귀적으로 해결. 단, 하위 문제를 더이상 분할할 수 없다면 직접 해결. 3. 결합(Combine):..