Вернуть отсортированную комбинацию двух массивов - PullRequest
0 голосов
/ 18 марта 2019

Мой метод должен возвращать комбинацию массивов "a" и "b", возвращая комбинацию в виде упорядоченного массива "c".

Для a [5] и b [4,6] c [] должно возвращаться [4,5,6]

В конце для этого случая мой код возвращается [4,5], я думаю, что в методе сортировки есть проблема, которую я не вижу.

package combinaum;
import java.util.Scanner;
/**
 *
 * @author 201627010262
 */
public class CombinaUm {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) 
{
   Scanner teclado = new Scanner (System.in);
   int n1 = teclado.nextInt();
   int n2 = teclado.nextInt();
   int[] a = new int [n1];
   int[] b = new int [n2];
   for(int i = 0; i < n1; i++)
   {
       a[i] = teclado.nextInt();
   }
   for(int i = 0; i < n2; i++)
   {
       b[i] = teclado.nextInt();
   }

  System.out.println(Arrays.toString(Combine(a, b, n1, n2)));
}

public static int Combine(int a[], int b[], int n1, int n2)
{  
    int e = 0;
    int d = 0;
    int i = 0;
    int n3 = n1+n2; 
    int [] c = new int [n3];

    while(e < a.length && d <b.length )
    {
        if(a[e] < b[d])
        {
           c[i] = a[e];
           e++;
           i++;
        }
        else
        {
            c[i] = b[d];
            d++;
            i++;
        }
    }
    while(e < a.length)
    {
        e++;
    }
    while(d <b.length)
    {
        d++;
    }

     return Arrays.copyOf(c, i);
}

}

1 Ответ

0 голосов
/ 18 марта 2019

Вам не нужно передавать параметры n1 и n2. Массивы знают свой размер, и вы можете получить его, используя a.length и b.length. Также вы хотите вернуть int[], чтобы иметь весь массив вместо одного int.

public static int[] Combine(int a[], int b[]) {
    int[] c = Arrays.copyOf(a, a.length + b.length);
    System.arraycopy(b, 0, c, a.length, b.length);
    return c;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...