public class MergeSort {
void sort(int a[],int lb,int ub)
{
if(lb<ub)
{
int mid = (lb+ub)/2;
sort(a,lb,mid);
sort(a,mid+1,ub);
merge(a,lb,mid,ub);
}
}
void merge(int[] a,int lb,int mid,int ub)
{
int i = lb;
int j = mid+1;
int k = lb;
int b[] = new int[6];
while(i<=mid && j<=ub)
{
if(a[i]<=a[j])
{
b[k] = a[i];
i++;
}
else
{
b[k] = a[j];
j++;
}
k++;
}
if(i>mid)
{
while(j<=ub)
{
b[k] = a[j];
j++;
k++;
}
}
else
{
while(i<=mid)
{
b[k] = a[i];
i++;
k++;
}
}
for(k=lb;k<=ub;k++)
{
a[k]=b[k];
}
}
В последнем условии if-else компилятор показывает ошибку. Я пытался отладить, изменяя значения размера массива, но я думаю, что, возможно, могут быть некоторые ошибки в операторах if-else. здесь ub - верхняя граница lb - нижняя граница, я использую i-й l oop для левого массива, в то время как j для правого массива k-е значение используется для окончательного отсортированного массива