package 快速排序_归并排序_二分查找_等排序;
public class GuiBIngSort {
public static void main(String args[]){
int[] arr = {-3,10,3,4,-1,2,5,6,7,0,1,8,9};
int[] aaa = new int[arr.length];
//Sort(arr,aaa,0,arr.length-1);
mergeSort(arr, 0 , arr.length-1);
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
public static void mergeSort(int[] a, int left, int right) {
if(left<right){
int middle = (left+right)/2;
//对左边进行递归
mergeSort(a, left, middle);
//对右边进行递归
mergeSort(a, middle+1, right);
//合并
merge(a,left,middle,right);
}
}
private static void merge(int[] a, int left, int middle, int right) {
int[] tmpArr = new int[a.length];
int mid = middle+1; //右边的起始位置
int tmp = left;
int third = left;
while(left<=middle && mid<=right){
//从两个数组中选取较小的数放入中间数组
if(a[left]<=a[mid]){
tmpArr[third++] = a[left++];
}else{
tmpArr[third++] = a[mid++];
}
}
//将剩余的部分放入中间数组
while(left<=middle){
tmpArr[third++] = a[left++];
}
while(mid<=right){
tmpArr[third++] = a[mid++];
}
//将中间数组复制回原数组
while(tmp<=right){
a[tmp] = tmpArr[tmp++];
}
}
}
java 归并排序(稳定)
最新推荐文章于 2023-06-11 14:05:39 发布