본문 바로가기

알고리즘 문제풀이

[CS] Merge Sort

반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>
#include <string.h>
 
// 정렬에 사용 할 자료
typedef struct _score 
{
    int id;
    int jumsu;
    char name[10];
}SCORE;
 
 
int main(void)
{
    return 0;
}
 
int Sort_Merge(SCORE *d, SCORE *tmp, int order, int s, int e, int (*comp)(SCORE * x, SCORE * y))
{
    int m,idx1,idx2,idxtmp;
    if(s>=e) return -1;
 
    m = (s+e)/2;
 
    Sort_Merge(d, tmp, order, s, m, comp);
    Sort_Merge(d, tmp, order, m+1, e, comp);
 
    idx1 = s; idx2 = m+1; idxtmp = s;
    while(idx1<=&& idx2<=e)
    {
        if((order * comp(&d[idx1],&d[idx2]))<0) tmp[idxtmp++= d[idx1++];
        else tmp[idxtmp++= d[idx2++];
    }
    
    if(idx1<=m) while(idx1<=m) tmp[idxtmp++= d[idx1++];
    else while(idx2<=e) tmp[idxtmp++= d[idx2++];
 
    for(idxtmp = s;idxtmp<=e;idxtmp++) d[idxtmp] = tmp[idxtmp];
    return e-s+1;
}
cs

 

반응형