java--归并排序算法2.0
| 算法 | 最好 | 最坏 | 平均 | 空间 | 稳定性 | |
|---|---|---|---|---|---|---|
| 递归 | nlog2n | nlog2n | nlog2n | n | 稳定 |
import java.util.Arrays;
public class Marge {
//递归算法Recursion algorithm
public static void main(String[] args) {
int[] arr={1,4,7,8,3,6,9};
//{5,9,11,12,17,21,31,3,4,6,9,10};
System.out.print("原序列输出:");
System.out.println(Arrays.toString(arr));
System.out.print("排序的结果:");
sort(arr, 0, arr.length-1);
print(arr);
}
static void sort(int[] arr,int left,int rigth){
if(left==rigth)return;
//数组中间值
int mid = left+(rigth-left)/2;
//左边排序
sort(arr, left, mid);
//右边排序
sort(arr, mid+1, rigth);
marge(arr, left, mid+1, rigth);
}
static void marge(int[] arr,int leftptr,int rigthptr,int certerptr){
int[] temp = new int[certerptr-leftptr+1];
int mid= rigthptr-1;
int i=leftptr;
int j=rigthptr;
int k=0;
while(i<=mid&&j<=certerptr){
if(arr[i]<arr[j])
{
temp[k++]