归并排序
代码
public class Test {
public static int[] sort(int[] arr,int low,int high) {
int mid=(high+low)/2;
if(low<high) {
sort(arr,low,mid);
sort(arr,mid+1,high);
merge(arr,low,mid,high);
}
return arr;
}
public static void merge(int[] arr,int low,int mid,int high) {
int i = low,j=mid+1,k=low;
int index = low;
int[] temp = new int[arr.length];
while(i<=mid&&j<=high) {
if(arr[i]<arr[j]) {
temp[k++]=arr[i++];
}
else {
temp[k++]=arr[j++];
}
}
while(i<=mid) {
temp[k++]=arr[i++];
}
while(j<=high) {
temp[k++]=arr[j++];
}
while(index<=high) {
arr[index]=temp[index];
index++;
}
}
public static void main(String[] args) {
int[] arr = {9,8,7,6,5,4,3,2,1,0};
int[] res = sort(arr,0,9);
for(int x : res) {
System.out.println(x);
}
}
}
to be continue…