C/C++ 예제

시삽: 레드플러스 님 
게시판 이동:
 제목 : 11.13. 병합(MERGE) 알고리즘
글번호: 251
작성자: 레드플러스
작성일: 2006/04/18 오전 11:50:06
조회수: 5409
/*
    병합(MEARGE) 알고리즘 : 오름차순으로 나열된 두 그룹의 데이터를 한 그룹의 데이터로 병합한다.
    (1) 데이터 a, b 중에 어느 한 쪽이 끝에 도달할 때까지 다음을 반복
    (2) a(i)와 b(j)를 비교해서 작은쪽을 c(k)에 복사하고 작은 쪽의 데이터 번호를 +1한다.
    (3) 둘 중에 아직 끝까지 도달하지 않은 데이터를 끝까지 복사한다.
*/
#include <stdio.h>

#define M 10
#define N 5

void main(void)
{
    //[1] Init/Input
    static int a[] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
    static int b[] = {1, 3, 5, 7, 9};
    static int c[M + N];    //병합된 데이터 저장

    //[2] Process
    int i, j, k;

    i = j = k = 0;

    while(i < M && j < N)    //a[], b[] 모두 끝에 도달하지 않은 동안
    {
        if(a[i] <= b[j])
        {
            c[k++] = a[i++];
        }
        else
        {
            c[k++] = b[j++];
        }
    }

    while(i < M)        //a[]가 끝에 도달할 때까지
    {
        c[k++] = a[i++];
    }

    while(j < N)        //b[]가 끝에 도달할 때까지
    {
        c[k++] = b[j++];
    }

    //[3] Output
    for(i = 0;i < M + N;i++)
    {
        printf("%d ", c[i]);
    }
    printf("\n");
}
 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 12. 메모리 관리 - 레드플러스 2005-07-26 5491
  11. C언어를 사용한 기초(현업) 알고리즘 - 레드플러스 2005-07-26 6236
  11.1. 예제. 합계(Sum), 카운트(Count), 평균(Avg) 알고리즘 : 합... - 레드플러스 2005-08-02 5273
  11.1.1 예제. 반올림, 올림, 내림 - 레드플러스 2005-11-25 8155
  카운트알고리즘.c - 레드플러스 2014-05-21 3847
  합계평균알고리즘.c - 레드플러스 2014-05-21 3973
  11.2. 예제. 최대값과 최소값 알고리즘 : 최대값최소값.c - 레드플러스 2005-08-02 12987
  11.2.1. 예제. 파일 처리를 사용한 합계/평균/최대값/최소값 - 레드플러스 2005-11-25 6609
  11.2.2 예제. 포인터를 사용한 최대값 알고리즘 - 레드플러스 2007-02-02 4816
  최댓값최솟값알고리즘.c - 레드플러스 2014-05-21 4352
  11.3. 예제. 오름차순 정렬 알고리즘 : 오름차순정렬.c - 레드플러스 2005-08-02 13584
  11.4. 예제. 선택 정렬(Selection Sort) 알고리즘 : 알고리즘_선택정... - 레드플러스 2005-08-02 5376
  선택 정렬(Selection Sort) 알고리즘 설명 엑셀 파일 선택정렬연습.xls(16 KB) 레드플러스 2005-08-08 5668
  선택 정렬(Selection Sort) 알고리즘 설명 텍스트 파일 - 레드플러스 2005-11-28 5091
  11.4.2. 예제. 선택 정렬(Selection Sort) 알고리즘 : 회전별 데이... - 레드플러스 2007-01-19 4799
  Re : 11.4.2. 예제. 선택 정렬(Selection Sort) 알고리즘 : 설... 선택정렬알고리즘설명.xls(14 KB) 레드플러스 2007-01-19 4406
  11.5. 예제 : 버블 정렬(Bubble Sort) 예제 : 알고리즘_버블정렬.c - 레드플러스 2005-08-05 6856
  11.6. 예제. 스위치를 사용한 버블 정렬 : 알고리즘_스위치사용버블정렬.c - 레드플러스 2005-08-05 5636
  11.7. 예제. 순위 구하는 프로그램 : 알고리즘_순위.c - 레드플러스 2005-08-06 5857
현재글 11.13. 병합(MERGE) 알고리즘 - 레드플러스 2006-04-18 5409
  그룹(GROUP) 알고리즘 - 레드플러스 2006-04-19 4600
  수열(Sequence) - 레드플러스 2006-04-24 4399
  11.10.1 수열(Sequence) : 1/2 - 2/3 + 3/4 - 4/5 + ... - 레드플러스 2007-01-16 4516
  가까운 값(근사값;NEAR) 알고리즘 - 레드플러스 2006-10-19 13190
  11.12. 최빈값(Mode) 알고리즘 - 레드플러스 2006-10-19 7001
  최빈값(Mode) 알고리즘 최빈값알고리즘설명.xlsx(11 KB) 레드플러스 2009-05-28 9159
  11.8. 순차 검색 알고리즘 - 레드플러스 2006-10-19 6180
  11.9. 이분(이진) 검색 알고리즘, 이진 탐색, 이진 검색 - 레드플러스 2006-10-19 6346
  11.10. 배수의 정렬 - 레드플러스 2007-01-26 4975
  11.11. 순서도(Flow Chart) : 알고리즘을 그림으로 표현하기 순서도(Flow Chart).ppt(32 KB) 레드플러스 2007-01-26 9141
  11.14. 예제. 기본적인 알고리즘 코드 : 피보나치수열.c - 레드플러스 2007-02-15 5698
다음글 10. 파일 처리 - 레드플러스 2005-07-26 6147
 
손님 사용자 Anonymous (손님)
로그인 Home