Merge Sort

프로그래밍 2007/11/18 13:38
#include <stdio.h>

#include <iostream>
#include <vector>

using namespace std;

void mergeSort(vector<int> arrayA, vector<int> arrayB, vector<int> &arrayRes)
{
    int indexA=0, indexB=0;

    while(indexA < arrayA.size() && indexB < arrayB.size()) {
        if(arrayA[indexA] < arrayB[indexB]) {
            arrayRes.push_back(arrayA[indexA]);
            indexA++;
        }
        else {
            arrayRes.push_back(arrayB[indexB]);
            indexB++;
        }
    }
    while(indexA < arrayA.size()) {
        arrayRes.push_back(arrayA[indexA]);
        indexA++;       
    }
    while(indexB < arrayB.size()) {
        arrayRes.push_back(arrayB[indexB]);
        indexA++;       
    }

    return;
}

int main()
{
    int inputA[] = {1, 5, 37, 42, 61};
    int inputB[] = {11, 15, 19, 48, 59};   

    vector<int> arrayA(&inputA[0], &inputA[sizeof(inputA)/sizeof(int)]);
    vector<int> arrayB(&inputB[0], &inputB[sizeof(inputB)/sizeof(int)]);
    vector<int> arrayRes;

    mergeSort(arrayA, arrayB, arrayRes);
   
    for(vector<int>::iterator vi=arrayA.begin(); vi != arrayA.end(); vi++) {
        printf("%d ", *vi);
    }
    cout << endl;

    for(vector<int>::iterator vi=arrayB.begin(); vi != arrayB.end(); vi++) {
        printf("%d ", *vi);
    }
    cout << endl;

    for(vector<int>::iterator vi=arrayRes.begin(); vi != arrayRes.end(); vi++) {
        printf("%d ", *vi);
    }
    cout << endl;

    return 1;
}

이올린에 북마크하기(0) 이올린에 추천하기(0)
top

Trackback Address :: http://misterlinker.tistory.com/trackback/14

Write a comment


◀ PREV : [1] : ... [4] : [5] : [6] : [7] : [8] : [9] : [10] : [11] : [12] : ... [19] : NEXT ▶