티스토리 뷰
반응형
병합정렬/합병정렬(Merge Sort)는 먼저 입력을 반으로 나눈다. 이렇게 나눈 전반부와 후반부를 각각 독립적으로 정렬한다. 마지막으로 정렬된 두 부분을 합쳐서, 즉 병합하여 정렬된 배열을 얻는다. 여기서 전반부를 정렬할 때도 역시 반으로 나눈 다음 정렬해서 병합한다. 즉, 원래의 정렬 문제와 성격이 똑같고 단지 크기만 반으로 줄었을 뿐이다. 후반부에 대한 정렬도 마찬가지다. 병합정렬은 자신에 비해 크기가 반인 문제를 두개 푼 다음, 이들을 병합하는 일을 재귀적으로 반복한다.
위 그림의 예를 살펴보면 초기 배열 A = { 5, 2, 4, 7, 1, 3, 2, 6} 이다. 병합정렬의 전반부, 후반부 정렬이 재귀적으로 반복되면서 배열의 원소가 하나씩 남을때 까지 쪼개진다. 그리고 각각 병합을 하면서 정렬이 이루어진다. {5}, {2} 가 병합되어 {2, 5} 가 되고 {4}, {7} 이 병합되어 {4, 7} ... 이렇게 진행되고 다음 스테이지에서 {2, 5} , {4, 7}이 병합되어 {2, 4, 5, 7} 이 되고 {1, 3}, {2, 6}이 병합되어 {1, 2, 3, 6}이 된다. 그 다음 스테이지에서 {2, 4, 5, 7} 과 {1, 2, 3, 6}이 병합되어 최종적으로 정렬된 {1, 2, 2, 3, 4, 5, 6, 7} 이 된다.
병합정렬(Merge Sort)의 슈도코드는 다음과 같다.
위의 함수 merge()를 좀더 구체적으로 기술하면 다음과 같다.
반응형
'프로그래밍 > 자료구조&알고리즘' 카테고리의 다른 글
| 힙정렬(Heap Sort) (4) | 2014.04.23 |
|---|---|
| 퀵정렬(Quick Sort) (0) | 2014.04.23 |
| 삽입정렬(Insertion Sort) (0) | 2014.04.22 |
| 버블정렬(Bubble Sort) (0) | 2014.04.22 |
| 선택정렬(Selection Sort) (0) | 2014.04.22 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 자료구조
- 투자전략
- ruby
- 엔비디아
- HBM
- 반도체관련주
- 한화에어로스페이스
- 주가전망
- 방산주
- 해운주
- 로봇관련주
- Rails
- 국제유가
- 주식투자
- 알고리즘
- 중동리스크
- Java
- AI반도체
- 코스피
- 삼성전자
- 현대차
- SK하이닉스
- 개인투자자
- K방산
- 한미반도체
- javascript
- 이펙티브 자바
- 한화오션
- ruby on rails
- 호르무즈해협
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
글 보관함
Copyright ⓒ 2018 moneystory.blog. All rights reserved.
