Şimdi bir gün Java öğreniyorum.
Başarılı bir işletme geliştiricisi olmak istiyorum. Öyleyse hangi algoritmalarla ve veri yapılarıyla iyi anlaşılmalıyım? Bana hangi kitapları önerirsiniz?
Başarılı bir Java geliştiricisi olmak için CLRS'de verilenler gibi tüm gelişmiş algoritmaları bilmem gerekir mi?
Bana önceliklerinin azalan düzeninde öğrenmem gereken konuların bir listesini önerebilir misiniz?
Bana bilmem gereken bazı konuların adını söyle. Arama, Sıralama, Grafik, Ağaç vb. Gibi?
Programlama becerilerinizi genişletmek ve geliştirmek için istekli olmanız iyidir. Ancak, algoritmaları ezberlemek için bir şeyler kataloğu olarak değerlendirmemek önemlidir. İyi bir geliştirici olmak için bilmeniz gereken şey (Java'da veya bu konuda başka bir şeyde) algoritmik analizi anlamaktır.
Sen belirli bir kaç veri yapılarını ve öğrenme algoritmaları, bu öğrenmek ve zaman ve mekan (bellek) açısından performanslarını analiz öğrenme. Arama, sıralama, grafikler, ağaçlar, yığınlar, yığınlar ve tüm bu iyi şeyler. Bu aynı zamanda bazı hesaplama teorisi ve ayrık matematik teorisinin temellerini takip etmelidir (Java dünyasında asla bu iki konuyu doğrudan kullanamaysak bile - faydaları dolaylıdır.)
Bir programlama dilinin öğrenmesini (sizin durumunuzda Java'da) algoritmik analizin öğrenilmesiyle ayırın (algoritmalar ve veri yapılarının "ezberlemesinden" farklıdır).
George T. Heineman, Gary Pollice ve Stanley Selkow'un "Özetle Algoritmaları" iyi bir başlangıç. Sanjoy Dasgupta, Christos Papadimitriou ve Umesh Vazirani'nin "Algoritmaları" bir başka güzel ders kitabı.
En iyisi algoritmalarda 3000 seviyelik bir kursa başlamadan önce programlamada 9-12 kredilik ders almaktır. Buna rağmen, bahsettiğim iki kitapla kendi kendine çalışma iyi bir alternatif olabilir (kendi kendine çalışma herkes için olmayabilir.)
İyi şanslar!