1、算法思想:归并排序是分治思想的应用,分而治之,将待排序序列分为若干个子序列,对每个子序列进行排序。然后通过递归将有序子序列合并为整体有序序列 。
2、代码实现:
import java.util.Arrays;
public class MergeSort {
public static int[] Sort(int []array,int low,int high){
int mid=(low+high)/2;
if(low<high){
Sort(array,low,mid);
Sort(array,mid+1,high);
Merge(array,low,mid,high);
}
return array;
}
public static void Merge(int[] array,int low,int mid,int high){
int temp[]=new int[high-low+1];
int i=low;
int j=mid+1;
int k=0;
while(i<=mid && j<=high){
if(array[i]<array[j]){
temp[k++]=array[i++];
}else{
temp[k++]=array[j++];
}
}
while(i<=mid){
temp[k++]=array[i++];
}
while(j<=high){
temp[k++]=array[j++];
}
for(int k1=0;k1<temp.length;k1++){
array[low++]=temp[k1];
}
}
public static void main(String [] args){
int []array={3,1,6,4,2,9,7,5,8};
Sort(array,0,array.length-1);
System.out.println(Arrays.toString(array));
}
}
3、时间复杂度:O(nlogn)
4、空间复杂度:O(n)
5、稳定的排序算法,元素较多时效率高