algorithm 병합정렬
Algorithm 2015. 7. 9. 16:37재귀호출 방식의 병합정렬
public class Main {
public static void main(String[] args) {
int[] a = {31, 41, 6, 26, 41, 58, 99, 85, 59};
for(int out : a) {
System.out.print(out + " ");
}
System.out.println();
mergeSort(a, 0, a.length-1);
for(int out : a) {
System.out.print(out + " ");
}
System.out.println();
}
private static void mergeSort(int[] a, int p, int n) {
int q = 0;
if (p < n) {
q = (p + n) / 2;
mergeSort(a, p, q);
mergeSort(a, q+1, n);
merge(a, p, q, n);
}
}
private static int[] merge(int[] a, int p, int q, int n) {
int i = p, j = q+1;
int[] result = new int[n-p+1];
for(int k = 0; k < n-p+1; k++) {
if(i <= q && j <= n) {
if(a[i] <= a[j]) {
result[k] = a[i];
i++;
} else {
result[k] = a[j];
j++;
}
} else if(i > q) {
result[k] = a[j];
j++;
} else if(j > n) {
result[k] = a[i];
i++;
}
}
for(int k = 0; k < result.length; k++) {
a[p+k] = result[k];
}
return a;
}
}
'Algorithm' 카테고리의 다른 글
| algorithm 버블 정렬 (0) | 2015.07.09 |
|---|---|
| algorithm 삽입정렬 (0) | 2015.07.08 |
| algorithm 문자사각형1 (0) | 2015.07.01 |
