public class MergeSort {
public static void mergeSort(int nums[], int helper[], int s, int e) {
if (s < e) {
int m = (s+e)/2;
mergeSort(nums, helper, s, m);
mergeSort(nums, helper, m+1, e);
merge(nums, helper, s, m, e);
}
}
public static void merge(int nums[], int helper[], int s, int m, int e) {
for (int i = s; i <= e; i++) helper[i] = nums[i];
int left = s, right = m+1, cur = s;
while(left <= m && right <= e)
nums[cur++] = helper[left] <= helper[right]? helper[left++] : helper[right++];
while(left <= m) nums[cur++] = helper[left++];
}
}
'2. 알고리즘 공부 > JAVA 기본 알고리즘 구현' 카테고리의 다른 글
4. Kruskal Algorithm (크루스칼 알고리즘) : MST 찾기 (0) | 2019.05.24 |
---|---|
3. Radix Sort (기수 정렬) (0) | 2019.05.03 |
2. Quick Sort(퀵정렬) (0) | 2019.05.03 |