분 치 법의 고전 알고리즘 1 - 병합 정렬

1442 단어
최근 에 알고리즘 을 훑 어 보 려 고 하 는데 이번 에는 분 치 법의 전형 적 인 예 이다. 합병 정렬 이다.필요 하신 분 은 직접 찾 으 세 요!저 와 함께 소통 하 는 걸 환영 합 니 다.
1. 정렬 알고리즘 사상 통합: 정렬 할 n 개의 요소 가 있 는 서열 을 두 개의 규모 크기 가 같은 하위 배열 로 나 누고 하위 배열 의 규모 가 쉽게 정렬 될 때 분할 을 중단 하지 않 으 면 계속 분할 합 니 다.정렬, 즉 하위 배열 이 단일 요소 만 있 을 때 까지 우 리 는 이 를 정렬 문 제 를 해결 하기 쉬 운 규모 로 여 긴 다. 우 리 는 이 단일 요 소 를 가 진 하위 배열 이 이미 순 서 를 정 한 다음 에 두 개의 인접 한 하위 배열 을 요구 하 는 서열 로 합 쳐 합병 되 지 않 은 하위 배열 이 존재 하지 않 을 때 까지 알고리즘 이 종 료 될 것 이 라 고 생각한다.단계: 먼저 대기 배열 을 하위 배열 로 나 눕 니 다.하위 배열 이 하나의 요소 만 있 을 때 분할 을 중단 합 니 다.이 하위 배열 을 두 개 로 합 쳐 라.
2. 코드 는 다음 과 같다: '' / / 분 치 법병합 정렬;public class MergeSort {
public static void MergeSort1(Comparable a[],int left,int right){
	Comparable []b =new Comparable[right+1];
	if(leftm) {
			for(int q=j;q<=r;q++) 
				d[k++]=c[q];
			}
		else {
			for(int q=i;q<=m;q++)
				d[k++]=c[q];
		}
	
}
 //    
  static void Copy(Comparable[] a, Comparable[] b, int left, int right) {
		for(int i=left;i<=right;i++) {
			a[i]=b[i];
		}
		
	}
public static void main(String[] args) {
	Comparable[] a= {23,5,9,16,30,25,17,18};
	MergeSort1(a,0,7);
	System.out.println("       :");
	for(int i=0;i<=7;i++) {
		System.out.print(a[i]+" ");
	}
	

}

}
‘’’

좋은 웹페이지 즐겨찾기