Saya ingin menjadi pengembang Java perusahaan yang sukses. Dengan algoritma dan struktur data apa yang harus saya fahami? Buku apa yang akan Anda rekomendasikan kepada saya?
Untuk menjadi pengembang Java yang sukses, apakah saya perlu mengetahui semua algoritma canggih seperti yang diberikan dalam CLRS ?
Bisakah Anda menyarankan daftar topik yang harus saya pelajari dalam urutan prioritas mereka?
Haruskah saya tahu:
- Mencari?
- Penyortiran?
- Grafik / Pohon?
dll?
java
learning
algorithms
data-structures
Chankey Pathak
sumber
sumber
Jawaban:
Pengantar Cormen untuk Algoritma adalah buku yang bagus untuk beberapa dasar teori dasar.
Yang mengatakan, sebagian besar algoritma dan struktur data telah dikodekan, diuji dan dioptimalkan oleh orang lain, dan tidak ada alasan untuk mengimplementasikannya sekali lagi. Untuk menjadi pengembang Java yang sukses, Anda perlu mengetahui Kerangka Koleksi di dalam.
sumber
Jika Anda ingin menjadi programmer dalam bentuk apa pun, Anda perlu memahami semua struktur data dasar (tumpukan, antrian, array, daftar tertaut, tabel hashtables, pohon, dll.) Secara terperinci. Setidaknya Anda bisa menerapkannya untuk diri sendiri jika Anda berada di dunia tanpa kerangka kerja koleksi untuk melakukan pekerjaan untuk Anda.
Berkenaan dengan algoritma, menurut saya mereka adalah lebih banyak alat untuk pekerjaan, sedangkan struktur data Anda adalah blok bangunan mendasar. Saya tidak berpikir itu sama pentingnya untuk mengetahui detail tentang bagaimana menerapkan setiap algoritma yang mungkin Anda temui. Apa yang perlu Anda lakukan adalah mengevaluasi seberapa baik suatu algoritma akan bekerja untuk tujuan tertentu. Terkadang perbedaan antara pencarian kedalaman pertama dan pencarian pertama atau jenis yang Anda lakukan pada data Anda dapat membuat perbedaan yang sangat besar untuk kinerja atau keberhasilan umum kode Anda, jadi mengetahui cara menilai itu sangat penting.
sumber
Selain jawaban lain, saya hanya ingin menambahkan bahwa studi tentang algoritma tidak hanya untuk mengetahui tentang teknik-teknik terkenal (yang masih penting), tetapi juga untuk dapat memahami tentang proses pemikiran yang masuk ke merancang solusi untuk masalah yang Anda hadapi dalam kehidupan nyata, belum tentu dikenal.
sumber
Adalah baik bahwa Anda ingin memperluas dan meningkatkan keterampilan pemrograman Anda. Namun penting untuk tidak memperlakukan algoritma sebagai katalog hal-hal yang harus diingat. Apa yang perlu Anda ketahui untuk menjadi pengembang yang baik (di Jawa atau yang lainnya) adalah memahami analisis algoritmik.
Anda belajar ini dengan mempelajari beberapa struktur data dan algoritma, dan belajar untuk menganalisis kinerjanya dalam hal waktu dan ruang (memori). Mencari, menyortir, grafik, pohon, tumpukan, tumpukan, dan semua barang bagus itu. Ini juga harus mengikuti beberapa dasar teori perhitungan dan matematika diskrit (bahkan jika di wilayah Jawa kita tidak pernah benar-benar menggunakan kedua topik itu secara langsung - manfaatnya tidak langsung.)
Pisahkan pembelajaran bahasa pemrograman (dalam kasus Anda Java) dengan pembelajaran analisis algoritmik (yang berbeda dari "menghafal" algoritma dan struktur data.)
George T. Heineman, Gary Pollice dan "Algoritma in a Nutshell" karya Stanley Selkow adalah awal yang baik. "Algoritma" oleh Sanjoy Dasgupta, Christos Papadimitriou, dan Umesh Vazirani adalah buku teks sarjana yang bagus.
Pemikiran terbaik adalah mengambil 9-12 mata kuliah kredit dalam pemrograman sebelum mengambil kursus tingkat sarjana, 3000-level dalam algoritma. Selain itu, belajar mandiri dengan dua buku yang saya sebutkan mungkin merupakan alternatif yang baik (belajar mandiri mungkin tidak untuk semua orang,).
Semoga berhasil!
sumber