package problem;
import java.util.Arrays;
public class MergeSort
{
int temp[];
void sort(int arr[]){
int start = 0;
int end = arr.length - 1;
temp = new int[arr.length];
mergeSort(arr,start,end);
}
void mergeSort(int arr[],int start,int end){
if(start >= end){
return;
}
int mid = start + (end - start) / 2;
mergeSort(arr,start,mid);
mergeSort(arr,mid + 1,end);
merge(arr,start,mid,end);
}
void merge(int arr[],int start,int mid,int end){
int left = start;
int right = mid + 1;
int index = start;
while(left <=mid && right <= end){
if(arr[left] < arr[right]){
temp[index] = arr[left++];
index ++;
}else{
temp[index] = arr[right++];
index ++;
}
}
if(left > mid){
while(right <= end){
temp[index++] = arr[right++];
}
}
if(right > end){
while(left <= mid){
temp[index++] = arr[left++];
}
}
for(int i=start;i <=end;i++){
arr[i] = temp[i];
}
}
public static void main(String[] args)
{
int num[] = {5,1,2,1,7,7,0,-2,-2,-6,-1,11,18};
MergeSort m = new MergeSort();
m.sort(num);
System.out.println(Arrays.toString(num));
}
}
归并排序
最新推荐文章于 2023-12-11 10:45:47 发布