티스토리 뷰

Development & Tips/Algorithms

Merge Sort

HLDEC 2007. 5. 18. 19:04

사용법 : MergeSort(정렬할 배열, 정렬할 배열과 같은 크기의 임시 배열, 정렬할 부분의 시작 위치, 정렬할 부분의 끝 위치);

[code cpp:nocontrols]
void MergeSort(int iArray[], int iTemp[], int iStart, int iEnd)
{
    if (iStart < iEnd) {
        int iMid = (iStart + iEnd)/2;
        MergeSort(iArray, iTemp, iStart, iMid);
        MergeSort(iArray, iTemp, iMid + 1, iEnd);
        Merge(iArray, iTemp, iStart, iMid, iEnd);
    }
}
void Merge(int iArray[], int iTemp[], int iLow, int iMid, int iHigh)
{
    int h = iLow, i = iLow, j = iMid+1, k;
    while ((h <= iMid) && (j <= iHigh)) {
        if (iArray[h] <= iArray[j]) { iTemp[i] = iArray[h]; h++; }
        else { iTemp[i] = iArray[j]; j++; } i++;
    }
    if (h > iMid) {
        for (k=j; k<=iHigh; k++) {
            iTemp[i] = iArray[k]; i++;
        }
    }
    else {
        for (k=h; k<=iMid; k++) {
            iTemp[i] = iArray[k]; i++;
        }
    }
    for (k=iLow; k<=iHigh; k++) iArray[k] = iTemp[k];
}
[/code]

'Development & Tips > Algorithms' 카테고리의 다른 글

3-Standard Quick Sort  (0) 2007.05.22
Prim Algorithm  (0) 2007.05.18
Kruscal Algorithm  (0) 2007.05.18
Quick Sort  (0) 2007.05.18
Merge Sort  (0) 2007.05.18
댓글
댓글쓰기 폼