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 |