Algoritma dan struktur data mana yang harus benar-benar diketahui pengembang? [Tutup]

24

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?

Chankey Pathak
sumber
1
@ jonsca: Afiliasi pemasaran ah? ;)
Chankey Pathak
Nah, well, SE mengubah tautan seperti itu, tapi saya baru tahu bahwa tidak semua orang tahu inisial itu :)
jonsca

Jawaban:

17

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.

Joonas Pulakka
sumber
3
Anda perlu mengetahui biaya yang terlibat dalam algoritme: pencarian pertama yang luas akan menemukan jalur terpendek saat menggunakan banyak ruang yang berpotensi, misalnya.
Frank Shearar
Setuju, meskipun hanya mendapatkan semangat notasi O besar berjalan jauh.
Joonas Pulakka
8

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.

glenatron
sumber
0

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.

MAK
sumber
0

Saya belajar Java sekarang.

Saya ingin menjadi pengembang perusahaan yang sukses. Lalu apa algoritma dan struktur data yang harus saya fahami dengan baik? 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 saya daftar topik yang harus saya pelajari dalam urutan prioritas mereka?

Katakan nama beberapa topik yang harus saya ketahui. Suka Pencarian, Sortasi, Grafik, Pohon dll?

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!

luis.espinal
sumber