import java.lang.reflect.Array;
public class Sorting {
public static void mergeSort(CompareInt[] arr) {
for(int i=0;i<=arr.length-1;i++){
System.out.println("Initial Arr element:"+arr[i].val);
}
CompareInt[] arrAux;
arrAux = new CompareInt[arr.length];
mergeS(arr,0,arr.length-1,arrAux);
}
public static void mergeS(CompareInt[] arr,int startI,int endI,CompareInt[] arrAux){
//System.out.println("StartIndex:"+startI+" EndIndex:"+endI);
if(endI-startI<=0)
return;
int mid = (startI+endI)/2;
// System.out.println("Midpoint value:"+mid);
mergeS(arr,startI,mid);
mergeS(arr,mid+1,endI);
// System.out.println("Inside mergeS");
// System.out.println("StartIndex:"+startI+" EndIndex:"+endI+" Midpoint value:"+mid);
// System.out.println("Arr length:"+arr.length);
arrAux = merge(arr,mid);
for(int i=0;i<=arr.length-1;i++){
arr[i]=arrAux[i];
System.out.println("Arr element:"+arr[i].val);
}
}
public static CompareInt[] merge(CompareInt[] arr,int midpoint){
int i=0,j=0,k=0;
int n1 = arr.length-midpoint;
int n2 = arr.length-n1;
//System.out.println("Midpoint value inside merge:"+midpoint);
//System.out.println("N1:"+n1+" N2:"+n2);
CompareInt[] L;
CompareInt[] R;
CompareInt[] resA;
L = new CompareInt[n1];
R = new CompareInt[n2];
resA = new CompareInt[n1+n2];
for(i=0;i<n1;i++){
L[i]=arr[i];
// System.out.println("Inside Left loop"+i);
// System.out.println(L[i].val);
}
for(j=0;j<n2;j++){
R[j]=arr[midpoint+j+1];
// System.out.println("Inside Right loop "+j);
// System.out.println(R[j].val);
}
i=0;
j=0;
k=0;
while(i<n1 && j<n2){
if(L[i].compareTo(R[j])<=0){
resA[k]=L[i];
// System.out.println(resA[i].val);
i++;
}
else{
resA[k]=R[j];
// System.out.println(resA[j].val);
j++;
}
k++;
}
while(i<n1){
resA[k]=L[i];
//System.out.println(resA[k].val);
i++;
k++;
}
while(j<n2){
resA[k]=R[j];
//System.out.println(resA[k].val);
j++;
k++;
}
return resA;
}
}
Я получаю фактические и формальные списки аргументов, различающиеся по длине в строке просто S (..) Как мне решить эту ошибку и есть ли способ запустить с различным количеством аргументов в фактических и формальных параметрах.
Вот как Псевдокод дается .. Изменения в псевдокоде: if (hi - lo <= 0) ", а не" if (hi - lo <= 1) ". Aux < - объединить (A [lo: mid], A [mid + 1: hi]) </p>