728x90
반응형
병합 정렬
- 분할과 정복 방식을 사용해 데이터를 분할하고 분할한 값들을 정렬하며 합치는 알고리즘
- 분할 정복? -> 문제를 나눌 수 없을 때까지 나누어서 각각을 풀면서 다시 합병하여 문제의 답을 얻는 알고리즘
- 정렬해야 할 리스트를 계속 분할하여 최대한 작게 쪼갠 후, 부분 리스트에서 인접한 원소들끼리 비교하여 정렬하는 방식
- 정렬 방법
- 주어진 리스트를 절반으로 분할하여 부분 리스트로 나눈다. (Divide : 분할)
- 해당 부분 리스트의 길이가 1 이 아니라면 1번 과정을 되풀이한다.
- 반드시 2개의 부분 리스트로 나눌 필요는 없다.
- 인접한 부분 리스트끼리 정렬하여 합친다. (Conqure : 정복)
- 병합할 때는 투 포인터 개념을 사용한다.
- 각 부분 리스트의 맨 앞 원소부터 비교를 진행한다.
- 각 부분 리스트는 이미 오름차순 정렬이 되어있으므로 추가적인 정렬 과정은 필요 없다.
- 시간 복잡도
- O(NlogN)
- 최선, 평균, 최악 모두 같다.
728x90
느낀 점
- 시간 복잡도가 O(NlogN)으로 O(N²)인 버블, 삽입, 선택 정렬보다 빠르므로 잘 알아두자.
다음에 학습할 것
- 병합 정렬 직접 구현해 보기
반응형
병합 정렬은 꼭 구현해 보자!
728x90
반응형
'Club > 99클럽 코테 스터디 2기' 카테고리의 다른 글
99클럽 코테 스터디 32일차 TIL Stream method 1 (0) | 2024.06.20 |
---|---|
99클럽 코테 스터디 31일차 TIL 병합 정렬 구현 (0) | 2024.06.19 |
99클럽 코테 스터디 29일차 TIL 순열과 조합 (0) | 2024.06.17 |
99클럽 코테 스터디 28일차 TIL 투 포인터 (0) | 2024.06.16 |
99클럽 코테 스터디 27일차 TIL printf (1) | 2024.06.15 |
댓글