SORU
5 Ocak 2011, ÇARŞAMBA


Nasıl iki sıralı diziler Birliği hazırlanmasında en küçük elemanı bulmak için?

Bu Ödev bir soru. N M diziler uzunlukları nerede O(logN logM) aldıklarını söylüyorlar.

Hadi adını diziler a b. Açıkçası ben ^ a[i] b[i] tüm göz ardı edebiliriz . k.
İlk edelim a[k/2] b[k/2] karşılaştırın. b[k/2] ^ edelim . a[k/2]. Bu nedenle de tüm i ^ b[i], iptal edebiliriz . k/2.

Şimdi tüm ben < k ve b[i] nereye ben < k)/2 a[i] cevap bulmak zorundayız.

Bir sonraki adım ne olacak?

CEVAP
5 Ocak 2011, ÇARŞAMBA


O kadar paran var, yürümeye devam et! Ve dizinler dikkat et...

O N ve M herhalde biraz kolaylaştırmak için vardır >k, karmaşıklığı buraya kadar(log log N M) Ç olan O(log k) ' dir.

Pseudo-kodu:

i = k/2
j = k - i
step = k/4
while step > 0
    if a[i-1] > b[j-1]
        i -= step
        j  = step
    else
        i  = step
        j -= step
    step /= 2

if a[i-1] > b[j-1]
    return a[i-1]
else
    return b[j-1]

Gösteri için j = k i döngü değişmeyen kullanabilirsiniz, ama tüm ödevlerini yap :) vermem

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jana Williams

    Jana William

    17 AĞUSTOS 2011
  • Jimmie Jones

    Jimmie Jones

    16 Kasım 2007
  • MrRandomSong

    MrRandomSong

    29 Kasım 2009