归并算法
Packagee com.book.java;
public class Project17_Merge {
public static void main(String[] args) {
int arr[]={0,10,8,90,1,4};
merge(arr,1,5);
for(int i=1;i<arr.length;i++)
{
System.out.print(arr[i]+" ");
}
}
public static void merge(int arr[],int from,int to)
{
if(from-to==0)
{
return ;
}
else
{
int a1=from;
int a2=(from+to)/2;
int a3=(from+to)/2+1;
int a4=to;
// System.out.println("merge中
的:"+":a1="+a1+":a2="+a2+":a3="+a3+":a4="+a4);
merge(arr,a1,a2);
merge(arr,a3,a4);
hebin(arr,a1,a4);
}
}
public static void hebin(int arr[],int from,int to)
{
int a1=from;
int a2=(from+to)/2;//代表了新增数组la
int a3=(from+to)/2+1;
int a4=to;//代表了新增数组lb的始末
int a5=from;
int a6=to;//代表的原始数组的始末
//
System.out.println("a1="+a1+";a2="+a2+";a3="+a3+";a4="+a4+";a5="+a5+";a6
="+a6);
int la[]=new int [a2-a1+1];
int lb[]=new int [a4-a3+1];
for(int i=0;i<la.length;i++)
{
la[i]=arr[a1];
a1++;
}
for(int i=0;i<lb.length;i++)
{
lb[i]=arr[a3];