HW#03 : 분할을 두 개로 하는 경우가 많다. 왜 두 개를 사용하는가?HW#03 : 분할을 두 개로 하는 경우가 많다. 왜 두 개를 사용하는가?
Posted at 2011. 3. 21. 22:38 | Posted in Computer Science/알고리즘K-Way Merge Sort를 예로 들어 보면 K값을 3으로 할 수도 있고 2로 할 수도 있다. 2-Way Merge Sort와 3-Way Merge Sort의 시간복잡도(Time Complexity)를 생각해 보아야 한다. Divide and Conquer Approach의 경우 T(n) = Divide + Conquer + Combie 시간을 생각해 보아야 한다.
K = 2 인 경우, T(n) = 0 + T(n/2) + T(n/2) + n/2 + n/2 - 1
K = 3 인 경우, T(n) = 0 + T(n/3) + T(n/3) + T(n/3) + n/3 + n/3 + n/3 - 1
결국 입력 원소의 개수가 크다면 K 값이 큰 것이 되부름(Recursion)을 적게 하여 유리하다. 또한 병렬 처리를 할 경우 K 값이 큰 것이 좋다. 하지만 3-Way Merge Sort는 병합 과정이 복잡하기 때문에 메모리의 Activation Record를 낭비해서라도 2-Way Merge Sort를 사용한다.
'Computer Science > 알고리즘' 카테고리의 다른 글
HW#06 : Dynamic Programming을 이용한 Binomial Coefficient 문제 해결 (0) | 2011.03.31 |
---|---|
HW#05 : Quick Sort의 구현과 예제의 동작 과정을 보이시오. (0) | 2011.03.24 |
HW#04 : Merge Sort의 구현과 예제의 동작 과정을 보이시오. (0) | 2011.03.21 |
HW#02 : N개의 배열을 이분 검색을 할 때 시스템 스택의 깊이는? (0) | 2011.03.21 |
HW#01 : 피보나치 수열의 값 찾기 문제에 대한 두 가지 접근법에 대한 일반화 (0) | 2011.03.17 |