개발정리

자바_병합정렬 본문

알고리즘/개념

자바_병합정렬

coffee. 2023. 7. 29. 20:20
class MergeSort{
	
	int[] preorder;

	
	void mergeSort(int[] arr) {
		this.preorder=new int[arr.length];
		
		
		merge(arr,0,arr.length-1);
		
		
	}
	
	private void merge(int[] arr,int start,int end) {
		
		if(start==end) {
			return;
		}
		
		int mid=(start+end)/2;
		
		
		
		merge(arr,start,mid);
		merge(arr,mid+1,end);
		
		
		int i=start;
		int j=mid+1;
		int idx=start;
		while(i!=mid+1 && j!=end+1) {
			
			if(arr[i]<arr[j]) {
				preorder[idx++]=arr[i];
				i++;
			}
			else {
				preorder[idx++]=arr[j];
				j++;
			}
			
			
			
		}
		
		if(i==mid+1) {
			
			while(j!=end+1) {
				preorder[idx++]=arr[j];
				j++;
			}
			
		}
		
		else {
			while(i!=mid+1) {
				preorder[idx++]=arr[i];
				i++;
			}
		}
		
		
		for(int k=start;k<=end;k++) {
			arr[k]=preorder[k];
		}
		
		
	}
	
	
	
}

public class Main {

	public static void main(String[] args) {
		MergeSort ms=new MergeSort();
		
		int arr[]= {52,6,24,63,17,35,24,63,27,55,42,25,747,54,9};
		
		
		ms.mergeSort(arr);
		
		for(int i:arr) {
			System.out.println(i);
		}
		
	}

}

결과

'알고리즘 > 개념' 카테고리의 다른 글

그래프 탐색  (0) 2023.07.28