Neredeyse sıralanmış bir dizi (k) elemanları daha fazla yanlış)sıralama | Netgez.com
SORU
28 NİSAN 2010, ÇARŞAMBA


Neredeyse sıralanmış bir dizi (k) elemanları daha fazla yanlış)sıralama

Bu soru yakın zamanda soruldu:

Neredeyse N elementlerin her doğru sıralanmış siparişten 1 ** pozisyonları daha fazla yanlış olabilir bu sıralama, bir dizi verilen konum. Uzay ve zamanı verimli bir algoritma diziyi sıralamak için.

Aşağıdaki gibi O(N log k) bir çözüm buldum.

Hadi arr[0..n) dizinden dizi N (özel) 0 (dahil) elemanları anlamına göstermek.

  • Sıralama arr[0..2k)
    • Åžimdi arr[0..k) final sıralanmış konumlarında olduÄŸunu biliyoruz
    • ...ama arr[k..2k) k tarafından yanlış olabilir!
  • Sıralama arr[k..3k)
    • Åžimdi arr[k..2k) final sıralanmış konumlarında olduÄŸunu biliyoruz
    • ...ama arr[2k..3k) k tarafından yanlış olabilir
  • arr[2k..4k) tür
  • ....
  • arr[ik..N), sıralama kadar sonra bitti!
    • Bu son adım 2k elementler sol daha az zaman diÄŸer adımları daha ucuz olabilir

Her adımda, her adımın sonunda final sıralanmış konumlarında O(k log k) en az k koyarak 2k en öğeleri öğeleri sıralamak. O(N/k) adım vardır, genel karmaşıklığı O(N log k).

Benim sorular şunlardır:

  • O(N log k) en uygunudur? Bunun üzerine geliÅŸtirilebilir?
  • (Kısmen) yeniden sıralama aynı elemanları olmadan bunu yapabilir misin?

CEVAP
28 NİSAN 2010, ÇARŞAMBA


Bob Sedgewick tez çalışmaları (ve eklentileri izleyin) gösterdiği gibi, eklemeli sıralama kesinlikleezer"neredeyse sıralanmış dizi". Senin asymptotics iyi ama k < bak bu durumda; 12 eklemeli sıralama her zaman kazanır eminim. İyi bir açıklaması var bilmiyorumnedeneklemeli sıralama çok iyi yapar, ama arama yeri Sedgewick bu ders kitabı hak bir olurAlgoritmaları(farklı diller için birçok sürümleri yaptı).

  • Hiçbir fikrim yok olsun O(N log k) optimal, ama daha önemlisi, ben aslında bakım-k küçük, sabit faktörler önemli, ve eÄŸer k büyük olabilir gibi sanki dizi.

  • Eklemeli sıralama yeniden sıralama aynı elemanları olmadan bu sorun nail olur.

Büyük-O gösterimi çok iyi algoritma sınıfı için, ama gerçek dünyada, sabitler olsun. Çok kolay bu Gözden kaybetmek. (Büyük-O gösterimi öğreten bir profesör olarak söylüyorum!)

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • geraldnonadoez

    geraldnonado

    3 Temmuz 2013
  • RomanAtwood

    RomanAtwood

    18 Kasım 2009