0
点赞
收藏
分享

微信扫一扫

【数据结构】-java实现归并排序(七)

萨科潘 2022-09-16 阅读 73


归并排序的思想、动态演示、C++、python实现,推荐参考归并排序详解 归并排序的思想:分而治之,这里有树的思想。

归并排序的算法性能

【数据结构】-java实现归并排序(七)_i++


由于需要递归,需要一个大小为n的临时存储空间用以保存合并序列。所以空间复杂度为O(n)。快速排序也是递归。

在归并排序中,相等的元素的顺序不会改变,所以它是稳定的算法。

java实现归并排序

    public static void mergesort(int[] arry, int low, int high){
if(low<high){
int mid=(low+high)/2;
mergesort(arry,low,mid);
mergesort(arry,mid+1,high);
merge(arry,low,mid,high);//每次归并的核心数组
}
}
public static void merge(int[] arry, int low, int mid, int high){
int[] buffer=new int[high-low+1];
int i=low;
int j=mid+1;
int k=0;
while(i<=mid&&j<=high){
if(arry[i]>=arry[j])
buffer[k++]=arry[j++];
else
buffer[k++]=arry[i++];
}
while(i<=mid){
buffer[k++]=arry[i++];
}
while(j<=high){
buffer[k++]=arry[j++];
}
int m=0;
while (low<=high){
arry[low]=buffer[m];
m++;
low++;
}
// System.arraycopy(buffer, 0, arry, low, high - low + 1);

}

总结
  • 归并排序思想是:分而治之,但是需要树帮助我们去理解。


举报

相关推荐

0 条评论