2015년 8월 7일 금요일

Divide and Conquer(분할 정복)


분할 정복이란 컴퓨터가 큰 데이터를 한번에 처리할 수 없기 때문에,  작은 단위로 나누어

데이터나 문제를 해결(정복) 하는 알고리즘이다. 일단 이론은 다음그림을 보면  

    이해가 쉽다. 






자그럼 다음 과 같이 배열이 있다.  과연 연속된 수들중 가장 큰 연속을 찾고

싶을 때 어떻게 할것인가 ?  


정답은 4 -1 3 2 4 -7 10 2 로 연속된 배열이가장 큰배열이다. 이것을 분할 정복을 통해

찾아보자. 우선 그림처럼 가장 작은단위 까지 분할 하고 그수들 중 큰 값을 가져와 서로

비교한다. 재귀 함수를 이용해 왼쪽 오른쪽 가운데  값들의 연속을 작은단위부터 가져와

비교하는 것이다.  위그림과 설명이 이해가 안 간다면 코드를 보자. (파란색 펜으로 그린 배

열은 MidMax 함수로 찾은 최대값)



 

0 개의 댓글:

댓글 쓰기