SORU
16 EYLÜL 2008, Salı


Neden quicksort mergesort daha iyi?

Bir röportaj sırasında bu soru soruldu. O(nlogn) ikisi de ve çoğu insan Mergesort yerine Quicksort kullanın henüz. Bu yüzden mi?

CEVAP
18 EYLÜL 2008, PERŞEMBE


Birçok kişinin belirttiği gibi, quicksort için ortalama durum performansı daha hızlı mergesort daha.Amabu ise sürekli zaman isteğe bağlı bellek herhangi bir parça erişmek için farz ise geçerlidir.

RAM bu varsayım genellikle çok kötü (her zaman önbelleğe alır, çünkü gerçek değil, ama çok kötü de değil). Ancak eğer veri yapısı disk üzerinde yaşamak için yeterince büyük değilse, o zaman quicksort alıröldürdüortalama disk saniyede 200 rastgele istiyor gibi bir şey yok aslında. Ama aynı disk sorun veya veri megabayt / saniye sıralı yazma okuma var. Mergesort yok zaten.

Veri disk üzerinde sıralanmış olmalı, bu nedenle, gerçekten, gerçekten mergesort bazı varyasyon kullanmak istiyorum. (Genellikle alt listelere quicksort, birlikte bazı boyutu eşiğin onları birleştirmeyi başlatın.)

Eğer yapacaksan ayrıcahiçbir şeyo boyutta veri setleri ile, sanırım engellemek hakkında sabit disk istiyor. Örneğin bu veritabanları büyük veri yükleri yapmadan önce dizinler bırakın ve endeks daha sonra yeniden standart bir tavsiye olmasıdır. Yükleme sırasında dizin bakımı sürekli diske arayan anlamına gelir. Eğer dizin bırakın buna karşılık, veritabanı, ilk üzerinde durulması gereken bilgileri (elbette bir mergesort kullanarak!) sıralayarak dizin yeniden ve sonra dizin için bir b-Tree indeksleme datastructure içine yükleniyor. (BTREEs doğal olarak birkaç disk istiyor ile sıralanmış bir veri kümesinden bir yük böylece sırayla tutulur.)

Disk önlemek için nasıl bir anlayış bana veri işleme işleri, günler ya da haftalar yerine, saat götürsün vardır istediği durumlarda birkaç kez olmuştur.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CMTelly

    CMTelly

    2 Mayıs 2007
  • Kanál používateľa McsFuego

    Kanál použ

    12 EKİM 2011
  • nigahiga

    nigahiga

    21 Temmuz 2006