Veri Yapıları, Algoritmalar ve Tradeoffs başlıklı bir noktada yazılmayı bekleyen bir ders kitabı var . Lisans düzeyinde öğreneceğiniz hemen hemen her algoritma veya veri yapısının, bazı uygulamalar için diğerlerinden daha iyi olmasını sağlayan bir özelliği vardır.
Örnek olarak sıralayalım, çünkü herkes standart sıralama algoritmalarına aşinadır.
Öncelikle, karmaşıklık tek endişe değil. Pratikte, sabit faktörler önemlidir, bu yüzden (örneğin) hızlı sıralama, hızlı sıralama korkunç en kötü durum karmaşıklığına sahip olmasına rağmen, yığın sıralamadan daha fazla kullanılma eğilimindedir.
İkincisi, her zaman garip kısıtlamalar altında programlama yaptığınız bir durumda kendinizi bulma şansınız vardır. Bir keresinde mümkün olduğunca hızlı örneklerin toplanması (bu yüzden 1000 veya) kuantil mütevazı ölçekli dan çıkarma yapmak zorunda, ama o kadar çok dışladı ki çok az yedek okuma-yazma hafızası vardı küçük mikrodenetleyici oldu sıralama algoritmaları. Kabuk sıralaması en iyi tradeoff'du çünkü ikinci dereceden ikinci dereceydi ve ek bellek gerektirmiyordu.O ( n günlüğün )
Diğer durumlarda, bir algoritmadan veya veri yapısından gelen fikirler özel amaçlı bir soruna uygulanabilir. Kabarcık sıralama, gerçek donanımdaki ekleme sıralamadan her zaman daha yavaş görünmektedir, ancak bir kabarcık geçişi gerçekleştirme fikri bazen tam olarak ihtiyacınız olan şeydir.
Örneğin, modern bir video kartında bir çeşit 3B görselleştirme veya video oyunu düşünün; bu, performans nedenleriyle en yakın kameradan en uzak kameraya kadar nesneleri çizmek için Siparişi tam olarak alamazsanız, donanım bununla ilgilenir. 3B ortamın etrafında hareket ediyorsanız, nesnelerin bağıl sırası kareler arasında çok fazla değişmez, bu nedenle her karede bir kabarcık geçişi gerçekleştirmek makul bir tradeoff olabilir. (Valf Kaynak Motoru, bunu partikül efektleri için yapar.)
Süreklilik, eşzamanlılık, önbellek yerleşimi, bir küme / buluta ölçeklenebilirlik ve bir veri yapısının veya algoritmasının önemsediğiniz işlemler için aynı hesaplama karmaşıklığına rağmen diğerinden daha uygun olmasının diğer olası nedenleri vardır.
Bunu söyledikten sonra, bu sadece bir durumda algoritmaları ve veri yapılarını ezberlemeniz gerektiği anlamına gelmez. Savaşın çoğu, ilk başta sömürülecek bir tradeoff olduğunu ve uygun bir şey olup olmadığını düşünerek nereye bakacağını bilmek.