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 归并排序(稳定)
最新推荐文章于 2024-06-19 13:05:09 发布
本文介绍了一种高效的排序算法——归并排序,并提供了详细的Java实现代码。通过递归地将数组分为两部分进行排序,然后合并两个有序部分来完成整个数组的排序过程。
427

被折叠的 条评论
为什么被折叠?



