Столкновение с массивом исключений оснований в следующем коде сортировки слияния java - PullRequest
0 голосов
/ 05 апреля 2020
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-е значение используется для окончательного отсортированного массива

...