Bently-Saxe yöntemi oldukça doğal ve istikrarlı bir öncelik sırası verir.
Verilerinizi dizileri halinde . boyutuna sahip . Her bir dizi ayrıca bir sayacını da korur . dizi girişleri veri içerir.A i 2 i c i A i [ c i ] , … , A i [ 2 i - 1 ]bir0, … , Akbirben2bencbenbirben[ cben] , … , Aben[ 2ben- 1 ]
Her , tüm elemanlar, daha yakın zamanda eklenmiştir ve her elementinin içindeki değerler, eski elemanların daha yeni elemanların önüne konmasıyla bağların değere göre sıralanmıştır. Bunun, ve ve bu sıralamayı koruyabileceğimiz anlamına geldiğine dikkat edin . (Birleştirme sırasında bağ olması durumunda, öğeyi .)A i A i + 1 A i A i A i + 1 A i + 1benbirbenbirben + 1birbenbirbenbirben + 1birben + 1
değerini eklemek için , 0 öğe içerdiği en küçük bulun, ve öğelerini birleştirin , bunu ve uygun şekilde ayarlayın.ben bir benxbenbirben x A i c 0 , … , c ibir0, … , Aben - 1xbirbenc0,…,ci
Min çıkarmak için, büyük indeksi bulmak ilk eleman bu tür tüm minimum ve artım .A i [ c i ] i c iiAi[ci]ici
Standart argümana göre, bu işlem başına itfa süresi verir ve yukarıda açıklanan sıralama nedeniyle kararlıdır.O(logn)
Bir yerleştirme ve çıkarma dizisi için , bu dizi girişini (boş dizileri saklamayın) artı defter tutma verisi kelimelerini kullanır. Bu, Mihai'nin sorunun versiyonuna cevap vermiyor, ancak istikrarlı kısıtlamanın fazla yer kaplamasını gerektirmediğini gösteriyor. Özellikle, hiçbir olduğunu gösterir gerekli ekstra alan üzerinde düşürmek bağlı.n O ( log n ) Ω ( n )nnO ( logn )Ω ( n )
Güncelleme: Rolf Fagerberg biz null adlı saklayabilir halinde (veri olmayan) değerleri, daha sonra bütün bu veri yapısı büyüklüğü bir diziye paketlenebilir işaret , burada şimdiye kadar eklemeler sayısıdır.nnn
Öncelikle, dizisini bu sıraya göre (önce , ardından boş değilse ). Bunun yapısı, şimdiye kadar eklenen elementlerin sayısı olan ikili gösterimi ile tamamen kodlanmıştır . İkili gösterimi durumunda pozisyonunda bir 1 sahiptir , daha sonra işgal edecek , dizi konumu, aksi takdirde herhangi bir dizi konumları işgal edecektir.A kbirk, … , A0birk n n i A i 2 ibirk - 1nnbenbirben2ben
Diziyi eklerken, ve uzunluğu 1 artar ve mevcut yerinde birleştirme algoritmaları kullanarak artı yeni öğeyi birleştirebiliriz.A 0 , … , A inbir0, … , Aben
Şimdi, null değerlerini kullandığımız yer sayaçlarından kurtulmaktır . Gelen , biz, ardından takip eden değeri saklamak kalan ardından boş değerler, değerleri. Extract-min sırasında inceleyerek zamanında çıkartılacak değeri hala bulabiliriz . Bu değeri bulduğumuzda ı null ayarladık ve sonra boş olmayan ilk değerini ve ve nin almak için üzerinde ikili arama yapın .A i c i 2 i - c i - 1 O ( log n ) A 0 [ 0 ] , … , A k [ 0 ] A i [ 0 ] A i [ 0 ] A i A i [ c i ] A i [ 0 ] A i [ c i ]cbenbirbenci2i−ci−1O(logn)A0[0],…,Ak[0]Ai[0]Ai[0]AiAi[ci]Ai[0]Ai[ci]
Sonuç: Tüm yapı, uzunluğu her ekleme ile artan bir dizi ve ekleme sayısını sayan bir sayaç, uygulanabilir.n