다음은 반복 병합 정렬을 위한 Java 프로그램입니다 -
예시
import java.util.Arrays;
public class Demo{
public static void merge_sort(int[] my_arr){
if(my_arr == null){
return;
}
if(my_arr.length > 1){
int mid = my_arr.length / 2;
int[] left = new int[mid];
for(int i = 0; i < mid; i++){
left[i] = my_arr[i];
}
int[] right = new int[my_arr.length - mid];
for(int i = mid; i < my_arr.length; i++){
right[i - mid] = my_arr[i];
}
merge_sort(left);
merge_sort(right);
int i = 0;
int j = 0;
int k = 0;
while(i < left.length && j < right.length){
if(left[i] < right[j]){
my_arr[k] = left[i];
i++;
} else {
my_arr[k] = right[j];
j++;
}
k++;
}
while(i < left.length){
my_arr[k] = left[i];
i++;
k++;
}
while(j < right.length){
my_arr[k] = right[j];
j++;
k++;
}
}
}
public static void main(String[] args){
int my_arr[] = {56, 78, 91, 21, 34, 0, 11};
int i=0;
merge_sort(my_arr);
System.out.println("The array after sorting is ");
for(i=0; i<my_arr.length; i++)
System.out.print(my_arr[i]+" ");
}
} 출력
The array after sorting is 0 11 21 34 56 78 91
Demo라는 클래스에는 배열이 비어 있는지 확인하는 'merge_sort' 함수가 포함되어 있고 비어 있으면 아무 것도 반환하지 않습니다. 배열의 길이가 1보다 크면 'mid' 값이 계산되고 배열은 'mid' 값까지 반복됩니다. 기본적으로 배열은 두 개의 동일한 부분으로 나뉘며 배열의 왼쪽에 있는 요소는 새 배열에 넣고 배열의 오른쪽에 있는 요소는 다른 배열에 넣습니다. 이제 이러한 배열이 분리되고 정렬됩니다. 그런 다음 함께 병합됩니다.
주 함수에서 배열이 정의되고 이 배열 요소에서 함수가 호출됩니다. 출력은 콘솔에 표시됩니다.