归并排序
package algorithm;
import java.util.Arrays;
public class MergeSort {
private static int[] a={0,2,0,0,0,-1,0,0,0,0,0,-1};
public static void mergeArray(int left,int right){
if(left>right){
return ;
}
int mid=(left+right)/2;
int[] b=new int[right-left+2];
int i=left;
int j=mid+1;
int k=0;
while(i<=mid&&j<=right){
if(a[i]<a[j]){
b[k++]=a[i++];
}else{
b[k++]=a[j++];
}
}
while(i<=mid){
b[k++]=a[i++];
}
while(j<=right){
b[k++]=a[j++];
}
for(int m=0;m<k;m++){
a[left+m]=b[m];
}
}
public static void mergeSort(int left,int right){
if(left>=right){
return;
}
int mid=(left+right)/2;
mergeSort(left,mid);
mergeSort(mid+1,right);
mergeArray(left,right);
}
public static void main(String[] args){
mergeSort(0,a.length-1);
System.out.println(Arrays.toString(a));
}
}