MCPcopy Create free account
hub / github.com/Seogeurim/CS-study / MergeSort

Class MergeSort

contents/algorithm/code/MergeSort.java:3–52  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1import java.util.Arrays;
2
3public class MergeSort {
4
5 static void merge(int[] arr, int start, int mid, int end) {
6 int i = start; // 왼쪽 배열의 시작
7 int j = mid + 1; // 오른쪽 배열의 시작
8 int k = 0; // 병합된 배열의 시작
9
10 int[] temp = new int[end - start + 1];
11 System.out.println("size : " + (end - start + 1));
12 while (i <= mid && j <= end) {
13 if (arr[i] < arr[j]) {
14 temp[k++] = arr[i++];
15 } else {
16 temp[k++] = arr[j++];
17 }
18 }
19 // 남은 값 복사
20 if (i > mid) { // 왼쪽 배열 값 다 사용함 , 오른쪽 다 복사
21 for (int idx = j; idx <= end; idx++, k++) {
22 temp[k] = arr[idx];
23 }
24 } else { // 오른쪽 배열 값 다 사용함, 왼쪽 다 복사
25 for (int idx = i; idx <= mid; idx++, k++) {
26 temp[k] = arr[idx];
27 }
28 }
29 System.out.println(Arrays.toString(temp));
30
31 // 임시 배열 -> 원래 배열
32 for (int num : temp) {
33 arr[start++] = num;
34 }
35
36 }
37
38 static void mergeSort(int[] arr, int start, int end) {
39 if (start < end) {
40 int mid = (start + end) / 2;
41 mergeSort(arr, start, mid);
42 mergeSort(arr, mid + 1, end);
43 merge(arr, start, mid, end);
44 }
45
46 }
47
48 public static void main(String[] args) {
49 int[] arr = { 8, 7, 6, 5, 4, 3, 2, 1 };
50 mergeSort(arr, 0, 7);
51 }
52}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected