SORU
11 Mayıs 2011, ÇARŞAMBA


Nasıl sıralanmış bir dizi içine iki sıralı diziler birleştirmek için?

Bu röportajda bana sorulan ve bu sana verilen çözümdür:

public static int[] merge(int[] a, int[] b) {

    int[] answer = new int[a.length   b.length];
    int i = 0, j = 0, k = 0;
    while (i < a.length && j < b.length)
    {
        if (a[i] < b[j])
        {
            answer[k] = a[i];
            i  ;
        }
        else
        {
            answer[k] = b[j];
            j  ;
        }
        k  ;
    }

    while (i < a.length)
    {
        answer[k] = a[i];
        i  ;
        k  ;
    }

    while (j < b.length)
    {
        answer[k] = b[j];
        j  ;
        k  ;
    }

    return answer;
}

Daha verimli bir şekilde bunu yapmak için var mı?

Edit: Düzeltilmiş uzunluğu yöntemleri.

CEVAP
20 Ocak 2012, Cuma


public static int[] merge(int[] a, int[] b) {

    int[] answer = new int[a.length   b.length];
    int i = 0, j = 0, k = 0;

    while (i < a.length && j < b.length)
    {
        if (a[i] < b[j])       
            answer[k  ] = a[i  ];

        else        
            answer[k  ] = b[j  ];               
    }

    while (i < a.length)  
        answer[k  ] = a[i  ];


    while (j < b.length)    
        answer[k  ] = b[j  ];

    return answer;
}

Biraz daha kompakt ama tam olarak aynı!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • circuschina

    circuschina

    16 Mart 2007
  • jedimasterkyle

    jedimasterky

    11 ŞUBAT 2006
  • TouchePro

    TouchePro

    27 EYLÜL 2007