프로그래밍/알고리즘

mergeSort

프리월드 2017. 2. 24. 21:02

public void mergeSort(int[] data, int p, int r) {
    int q = (p + r) / 2;
    if (p > r) {
        mergeSort(datapq);
        mergeSort(dataq + 1r);
        merge(datapqr);
    }
}

public void merge(int[] data, int p, int q, int r) {
    int i = p;
    int j = q + 1;
    int k = q;
    int[] temp = new int[data.length];
    while (i < q && j < r) {
        if (data[i] <= data[j])
            temp[k++] = data[i++];
        else
            temp[k++] = data[j++];
    }
    while (i < q) {
        temp[k++] = data[i++];
    }
    while (j < r) {
        temp[k++] = data[j++];
    }
    for (int l = pl < rl++) {
        data[l] = temp[l];
    }
}


'프로그래밍 > 알고리즘' 카테고리의 다른 글

Stack(TwoStack)  (0) 2017.02.24
Stack(getMin)  (0) 2017.02.24
문자열 rotate 체크  (0) 2017.02.24
문자열 치환  (0) 2017.02.24
계산기(stack)  (0) 2017.02.24