最近在学习算法的时候,老师让我们实现ButtomUpSort算法,然后实现的时候发现在ButtomUpSort算法中调用MERGE算法中带入了三个参数i+1,i+s,i+t,忽然就被看懵了,然后想了想逐步拆解ButtomUpSort算法,所以写了如下MERGE算法实现
具体代码如下:
public class Merge {
public static void main(String[] args) {
int[] A = {15,17,19,23,24,16,18,19,20};
int[] B = new int[9];
int k=0;
int p=0;
int q=4;
int r=A.length-1;
int s=p;
int t=q+1;
while ((s<=q)&&(t<=r)){
if (A[s]<=A[t]){
B[k]=A[s];
s=s+1;
}else {
B[k]=A[t];
t=t+1;
}
k=k+1;
}
if (s==q+1){
System.arraycopy(A,r,B,k,(t-r)+1);
}else {
System.arraycopy(A,s,B,k,(q-s)+1);
}
System.arraycopy(B,p,A,p,(r-p)+1);
for (int i=0;i<9;i++){
System.out.print(" "+B[i]);
}
}
}