책/Do it! 알고리즘 코딩 테스트 자바 편
Day-7 병합 정렬
댈팽이
2024. 3. 27. 18:44
728x90
1. 병합 정렬
- 분할 정복 방식을 사용해 데이터를 분할하고 분할한 집합을 합치며 정렬하는 방식이다.
- 평균 시간 복잡도는 O(nlogn)이다.
2. 병합 정렬 과정
최초에는 8개의 집합으로 나눈다.
2개씩 집합을 합치며 오름차순 정렬한다.
(42)와 (32)가 합쳐져 (32, 42)로 정렬된다.
이와 같은 과정을 집합이 하나가 될 때까지 반복하면 된다.
3. 그룹 병합 과정
자세한 병합 과정은 위 그림과 같다.
(24, 32, 42, 60)과 (5, 15, 45, 90) 두 집합을 병합하는 과정이다.
집합의 최소값을 가리키는 포인터를 각각 생성한다.
포인터가 가리키는 값을 비교하여 더 작은 값을 결과 배열에 추가한다.
4. 예제 문제
[2751] 수 정렬하기 2 (JAVA)
# 문제 설명 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다.
spicyrisotto.tistory.com
[24060] 알고리즘 수업 - 병합 정렬 1 (JAVA)
# 문제 설명 오늘도 서준이는 병합 정렬 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. N개의 서로 다른 양의 정수가 저장된 배열 A가 있다.
spicyrisotto.tistory.com
728x90