algorism

병합정렬 알고리즘

풀스택 개발자 2020. 1. 15. 15:46

오름차순으로 정렬이 된 두 배열이 주어지면 두 배열을 오름차순으로 합쳐 출력하는 프로그램
을 작성하세요.


입력설명
첫 번째 줄에 첫 번째 배열의 크기 N(1<=N<=100)이 주어집니다.
두 번째 줄에 N개의 배열 원소가 오름차순으로 주어집니다.
세 번째 줄에 두 번째 배열의 크기 M(1<=M<=100)이 주어집니다.
네 번째 줄에 M개의 배열 원소가 오름차순으로 주어집니다.
각 배열의 원소는 int형 변수의 크기를 넘지 않습니다.


출력설명
오름차순으로 정렬된 배열을 출력합니다.


입력예제 1
3
1 3 5
5
2 3 6 7 9


출력예제 1
1 2 3 3 5 6 7 9

 

#include<iostream>
using namespace std;
int main()
{
	int arr[101] = { 0 };
	int arr2[101] = { 0 };
	int result[101];
	int count = 0;
	int N;
	int N2;
	int win;
	cin >> N;
	for (int i = 0; i < N; i++)
	{
		cin >> arr[i];
	}
	cin >> N2;
	for (int i = 0; i < N2; i++)
	{
		cin >> arr2[i];
	}
	if (N > N2)
	{
		win = N;
	}
	else
	{
		win = N2;
	}
		
	for (int i = 0; i < N2; i++)
	{
		if (arr[i] > arr2[i])
		{
			result[count] = arr2[i];
			count++;
			result[count] = arr[i];
			count++;
		}
		else if (arr[i] < arr2[i])
		{
			result[count] = arr[i];
			count++;
			result[count] = arr2[i];
			count++;

		}
		else if (arr[i] == arr2[i])
		{
			result[count] = arr[i];
			count++;
			result[count] = arr2[i];
			count++;
		}

	}
	for (int i = 0; i < count; i++)
	{
		if (result[i] != 0)
		{
			cout << result[i] << " ";
		}
		
	}

}