MERGE算法的JAVA实现
最近在学习算法的时候,老师让我们实现ButtomUpSort算法,然后实现的时候发现在ButtomUpSort算法中调用MERGE算法中带入了三个参数i+1,i+s,i+t,忽然就被看懵了,然后想了想逐步拆解ButtomUpSort算法,所以写了如下MERGE算法实现
具体代码如下:
/**
* @author Sheye
* @date 2019-09-17 20:19
*/
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){
/**
* src - 源数组。
* srcPos - 源数组中的起始位置。
* dest - 目标数组。
* destPos - 目的地数据中的起始位置。
* length - 要复制的数组元素的数量。
*/
System.arraycopy(A,r,B,k,(t-r)+1); //B[r-k]=A[r-t];
}else {
System.arraycopy(A,s,B,k,(q-s)+1); //B[r-k]=A[q-s];
}
System.arraycopy(B,p,A,p,(r-p)+1); //A[r-p]=B[r-p];
for (int i=0;i<9;i++){
System.out.print(" "+B[i]);
}
}
}
转载:https://blog.csdn.net/u014120081/article/details/100941042
查看评论