合并排序
Posted bowenqianngzhibushiwo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了合并排序相关的知识,希望对你有一定的参考价值。
合归并排序需要 ,先排序,再 合并。复杂度为O(nlogn);空间复杂度为O(N)。需要额外的数组,保存复制已排序的数组到原数组中。
public static void mergeSort(int [] a,int l,int r) if(l==r) return ; int mid=l+(r-l)/2; mergeSort(a,l,mid); mergeSort(a,mid+1,r); merge(a,l,mid,r); public static void merge(int [] a,int l,int m,int r) int i=l; int p1=l; int p2=m+1; int [] tmp=new int[r-1+1]; while(p1<=m&&p2<=r) tmp[i++]=a[p1]<a[p2]?a[p1++]:a[p2++]; while(p1<=m) tmp[i++]=a[p1++]; while(p2<=r) tmp[i++]=a[p2++]; for(int j=0;j<tmp.length;j++) a[l+j]=tmp[j];
以上是关于合并排序的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode练习(Python):链表类:第23题:合并K个排序链表:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。