본문 바로가기

공부 기록/알고리즘

Do it! 알고리즘 코딩테스트 with JAVA - (11) 병합 정렬

병합 정렬

- 분할 정복 방식을 사용해 데이터를 분할하고 분할한 집합을 정렬하며 합치는 알고리즘

- 시간 복잡도는 O(nlogn)이다.

 

병합 정렬 과정

  1. 최초에 가장 작은 그룹으로 나눈다.
  2. 2개씩 그룹을 합치며 오름차순 정렬한다.
  3. 다시 2개씩 그룹을 합치며 정렬한다.
  4. 위의 과정을 거치면 그룹 전체의 오름차순 정렬이 완료된다.

2개의 그룹을 병합하는 과정

- 투 포인터 개념을 사용하여 왼족, 오른쪽 그룹을 병합한다. 왼쪽 포인터와 오른쪽 포인터의 값을 비교하여 작은 값을 결과 배열에 추가하고 포인터를 오른쪽으로 1칸 이동시킨다.


문제 풀이

https://yurison.tistory.com/344

 

[백준/자바] 2751 - 수 정렬하기 2

import java.io.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Buf

yurison.tistory.com


https://yurison.tistory.com/543

 

[백준/자바] 1517 - 버블 소트

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static int[] arr, temp; public static long result; public static void main(String[] args) throws IOExc

yurison.tistory.com