유래
설계 전략
분할(Divide)
: 해결할 문제를 여러 개의 작은 부분으로 나눔.정복(Conquer)
: 나눈 작은 문제를 각각 해결.통합(Combine)
: (필요하다면) 해결된 답 모음.Top-Down Approach
// 분할 정복 거듭 제곱
Recursive_power(T x, int n){
if (n == 1) return x;
if (n % 2 == 0){
T y = Recursive_power(x, n/2);
return y * y
}else{
T y = Recursive_power(x, (n-1)/2);
return y * y * x
}
}
정렬된 자료
// 반복을 통한 이진 검색
int binaerySearch(S[], n, key){
start = 0;
end = n-1;
while (start <= end){
mid = (start+end) / 2;
if(S[mid] == key){
return mid;
}else if(S[mid] < key){
start = mid + 1;
}else if(S[mid] > key){
end = mid - 1;
}
}
return -1;
}
// 재귀를 통한 이진 검색
int binaerySearch(S[], start, end, key){
if (start > end)
return -1;
else{
mid = (start + end) / 2;
if(S[mid] == key){
return mid;
}else if(S[mid] < key){
return binarySearch(S[], mid+1, end, key);
}else if(S[mid] > key){
return binarySearch(S[], start, mid-1, key);
}
}
}