public class Merge {
public static void main(String[] args) {
int[] arr = {1,3,5,2,4,6,6,5,1,2,3};
mergeSort(arr, 0, arr.length - 1);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void merge(int[] arr, int low, int mid, int high){
int left_length = mid - low + 1;
int right_length = high - mid;
int[] left = new int[left_length];
int[] right = new int[right_length];
int index = low;
for (int i = 0;i < left_length;i++){
left[i] = arr[index];
index++;
}
for (int i = 0;i < right_length;i++){
right[i] = arr[index];
index++;
}
index = low;
int i = 0,j = 0;
while (i < left_length && j < right_length){
if(left[i] <= right[j]){
arr[index] = left[i];
i++;
index++;
continue;
}
if(left[i] > right[j]){
arr[index] = right[j];
j++;
index++;
continue;
}
}
while(i < left_length){
arr[index] = left[i];
i++;
index++;
}
while(j < right_length){
arr[index] = right[j];
j++;
index++;
}
}
public static void mergeSort(int[] arr, int low, int high){
if(low == high){
return;
}else {
int mid = (low + high)/2;
mergeSort(arr, low, mid);
mergeSort(arr, mid + 1, high);
merge(arr, low, mid, high);
}
}
}
归并排序java实现
最新推荐文章于 2024-01-16 16:42:51 发布