Bu bir röportaj sorusudur: Hindistan'ın 1,14 milyar nüfusu göz önünde bulundurulduğunda, onları en yüksek seviyesine göre sıralamak için kullanılabilecek en etkili/verimli sıralama algoritması hangisidir? (Yükseklik verileri sizin için mevcuttur). olası yükseklikleri aralığı oldukça küçük olduğundan1.14 milyar insanın yüksekliğini sıralamak için sıralama algoritması!
cevap
, ben tavsiye:
- milimetre tüm yükseklikleri ifade edin.
- Min ve maksimum yükseklikleri hesaplayan verilerden bir geçiş yapın.
- Min ve max arasında çok yüksekliğe sahip kutuları ayırın.
- İnsanları uygun kutulara ekleyen verilerden ikinci bir geçiş yapın.
Veri kümesinden iki geçiş, ayrıca bin ayırma sayısı. O (n).
İlk iterasyona gerek yoktur, değerlerin 0 ile 3000 mm arasında olacağını garanti ederim. – ruslik
Adım 2, zorunlu değildir. Milimetrede 0'dan 9 feet'e kadar 2700'den fazla bidon yeterlidir. – Blastfurnace
Ve sonuç olarak, her ikisini de atlayabilirsiniz :) – ruslik
O (n):
yükseklikleri en yakın mm'ye yuvarlanabilir Eğer, o zaman yükseklikleri histogramını hesaplamak ve sırayla her histogram kova sayımları yazdırabilirsiniz. Gerekli beklenen RAM, yaklaşık 2000 32 bit'lik bir intihar için yalnızca birkaç KB'dir.
Benim tahminim görüşmeyi farklı yüksekliklerde sayısı Θ(n+k)
, nerede bir kötü durum aşaması karmaşık bölümü olan çeşit uygun olacağını sayma anlamına gelir kişi sayısına, önemli ölçüde daha küçük olduğunu varsayar olmasıdır n
, kullanıcıların sayısıdır ve k
, yükseklik sayısıdır.
tür sayma bir karşılaştırma çeşit olmadığından, görüşmeyi yapan gerçekten nereyevaracağını muhtemelen geçerli değildir alt sınır tipik Ω(n×log n)
.
Sınırlı sayısal veriler için başka bir doğrusal zaman seçeneği, bin sorting'un yalnızca özel bir sayısal sürümü olan radix sort'dur.
- 1. Birleştirme Sıralama Algoritması?
- 2. Bir sıralama algoritması seçmek için kriterler nelerdir?
- 3. Oylama algoritması: sıralama nasıl hesaplanır?
- 4. sıralama listesi - descedent amacıyla Tarihe Göre Nesnelerin listesini sıralamak için
- 5. Eşit Elemanlar ile Hızlı Sıralama Algoritması İlerleme
- 6. Mysql sıralamak için endeksi kullanıyor mu?
- 7. Pandalar: pd.DataFrame dizini ile dizin sıralamak için pd.DataFrame'i sıralamak için kullanılır.
- 8. Kısmi ayırma algoritması
- 9. Farklı senaryolarda C#/.NET için en iyi sıralama algoritmaları
- 10. perl6 Dizileri sıralamak için en iyi yollar?
- 11. Ay takviminde ayları sıralamak için QuickSort'u kullanma
- 12. Satırlara göre metin dosyasını sıralamak için kabarcık sıralamasını kullanma
- 13. Glyphicon Sütunları sıralamak için yardım okları
- 14. İşaretleme tablolarını sıralamak için herhangi bir yol var mı?
- 15. sıralamak için nasıl HashMap tuşları
- 16. Sıralama sözlüğü
- 17. n boyutlu eşleştirme algoritması
- 18. Django. sıralama için doğru yol?
- 19. Lucene belgelerini Luke'a sıralama
- 20. Amazon S3'te dosyaları sıralamak mümkün mü?
- 21. Liste sıralama kullanarak STL sıralama işlevi
- 22. Sıralama NSDictionary
- 23. Eppstein'ın algoritması ve en kısa yollar için Yen algoritması
- 24. Açık mysql sorgu için sıralama düzeni belirtin?
- 25. mm sıralamak için jQuery tablesorter kullanma/yy Bir masa sıralamak için jquery tablesorter eklentisi kullanıyorum
- 26. Fortune algoritması için sözde kod
- 27. Vektörde bir elemanı sıralamak için en etkili yol?
- 28. Eclipse'de sıralama yöntemleri
- 29. gpu için bir numpy matrisi sıralama
- 30. NSArrayController, özel sıralama
Uhm, quicksort? – cdhowie
hızlı sıralama, hepsi bir kerede bellekte tutulabilirlerse iyi olur. Ve bellek dışı sıralama gerekli olacaktır. – winwaed
Neden bellekte bir sıralama gerekecek? Soru donanım gereksinimlerini belirtmiyor, bu nedenle neden 1.14 milyar girişe sahip belleği olan donanımları kullanmıyorsunuz? – Slartibartfast