Durum - A i - A j | ≥ k/n, [0, 2k] aralığını 2n farklı kovaya bölerseniz (her biri boyutu 2k/2n = k/n olan), her bir aralıkta en fazla bir sayı olabilir (Rakamlar, kepçelerin uç noktalarındadır.) Kepçeleri daha sıkı bir şekilde oluşturursanız (3n kepçeleri oluşturarak), her kepçenin boyutu k/n'den küçüktür ve bu nedenle en fazla bir sayı içerebilir.
Daha sonra bir paket sıralama algoritması kullanılarak sıralamak olabilir:
- 3n kova, bir dizi, her bir aralık [(2k/3n) temsil eden oluşturma inositol, (2k/3n) (i + 1)), her bir dizi için
- : numarası (2k/3N) ile yerleştirmek için olan kepçe belirlemek için
- Böl.
- Numarayı bu kutuya yerleştirin. her bir bölüm için
- : bu kova boş olmayan ise
- , sonuç diziye bu kova numarasını yazın. Eğer boyutu 3N bir dizi oluştururken yana
ilk adım, O (n) bir zaman alır. Bir sonraki adım O (n) zamanını alır, çünkü O (n) sayılarının her birini bir kez ziyaret edersiniz ve her adımda O (1) çalışır. Son adım ayrıca toplam 3n kovaları ziyaret ettiğinizden O (n) süreyi de alır.
Bu yardımcı olur umarız!
tamsayı sıralama FTW! –
@ templatetypedef her çiftden beri>> k/n', bu yüzden '' k 'n' 'k'' boyutlu küme yeterli değil? 'N = 8, k = 30' ve sayılar: '0,4,7,12,15,18,22,25' sonra' B0 = 0', 'B1 = 4',' B2 = 7', B3 = 12', 'B4 = 15',' B5 = 18', 'B6 = 22',' B7 = 25', dinlenme grupları boş mu? Yani her kova ya 0 ya da maks. 1 numara. –