Merge Algorithm - 병합 알고리즘
Programming/Java Algorithm 기초

Merge Algorithm - 병합 알고리즘

728x90

Merge Algorithm - 병합 알고리즘

  • 오름차순으로 정렬되어 있는 두 정수 배열을 하나로 병합
package mergeAlgorithm;
//[?] 2개의 정수 배열 합치기 : 단 2개의 배열은 오름차순으로 정렬되어 있다고 가정

//병합 알고리즘(Merge Algorithm) : 오름차순으로 정렬되어 있는 정수 배열을 하나로 병합

public class MergeAlgorithm {
	public static void main(String[] args) {
		//[1] input
		int[] first = {1, 3, 5};
		int[] second = {2, 4};
		int M=first.length; int N=second.length; // 관행 적으로 배열은 M, N으로 많이 표현함
		int[] merge = new int[M+N]; 		// 병합된 배열
		int i = 0, j = 0, k = 0; 		// 관행적으로 정수는 i, j, k 등으로 많이 표현
		
		//[2] process : 병합 알고리즘
		while (i < M && j < N) {		// 둘 중 하나라도 배열의 끝에 도달할 때까지
			if(first[i] < second[j]) {	//작은 값을 merge 배열에 저장
				merge[k++] = first[i++];
			} else {
				merge[k++]=second[j++];
			}
		}
		while (i<M) {			//첫 번째 배열이 끝까지 도달할 때까지
			merge[k++]=first[i++];
		}
		while (j<N) {			//두 번째 배열이 끝까지 도달할 때까지
			merge[k++]=second[j++];
		}
		
		//[3] output
		for(int ii = 0; ii<M+N; ii++) {
			System.out.print(merge[ii] + " ");
		}
		System.out.println();
		/* 아래 처럼 for-each문으로도 가능.
		for(int item : merge) {
			System.out.print(item + " ");
		}
		System.out.println();
		*/
	}
}

 

300x250