본문 바로가기

미래(2015-2016)/자습

배열을 정렬하여 병합하기



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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/*
    2015.09.01
    내용: 이미 오름차순으로 정렬되어 있는 두 배열 a,b의 병합 결과를 출력하는 프로그램을 작성하시오.
            int a[] = {1, 2, 4, 7, 9, 14};
            int b[] = {2, 3, 6, 8, 13};
            int c[] = {1, 2, 2, 3, 5, 6, 7, 8, 9, 13, 14};
        => void arraymerge(int *a, int an, int *b, int bn, int *c) : an과 bn은 각각 배열의 크기
*/
 
#include <stdio.h>
 
void arraymerge(int *a, int an, int* b, int bn, int *c)
{
    int i = 0, j = 0, k = 0;
 
    while (an < bn ? i < an : j < bn)
    {
        if (a[i] < b[j])
        {
            c[k] = a[i];
            i++;
            k++;
        }
        else
        {
            c[k] = b[j];
            j++;
            k++;
        }
    }
 
    if (an > bn)
    {
        for (i; i < an; i++, k++)
        {
            c[k] = a[i];
        }
    }
    else
    {
        for (j; j < bn; j++, k++)
        {
            c[k] = b[j];
        }
    }
 
    for (k = 0; k < an + bn; k++)
    {
        printf("%d ", c[k]);
    }
}
 
int main()
{
    int a[] = { 1257914 };
    int b[] = { 236813 };
    int c[(sizeof(a)/sizeof(int)) + (sizeof(b)/sizeof(int))];
 
    arraymerge(a, sizeof(a) / sizeof(int), b, sizeof(b) / sizeof(int), c);
 
    return 0;
}
cs


c150901_sort.c


'미래(2015-2016) > 자습' 카테고리의 다른 글

계산기  (0) 2015.09.03
자판기  (0) 2015.09.03
포인터를 이용한 배열복사  (0) 2015.09.01
정수 두 개와 연산자 받아 계산하기  (0) 2015.08.28
벌점 계산하기  (0) 2015.08.28