Quali algoritmi e strutture dati dovrebbero essere assolutamente a conoscenza di uno sviluppatore? [chiuso]

23

Voglio essere uno sviluppatore Java enterprise di successo. Con quali algoritmi e strutture dati dovrei essere esperto? Quali libri mi consiglieresti?

Per essere uno sviluppatore Java di successo, devo conoscere tutti gli algoritmi avanzati come quelli forniti in CLRS ?

Puoi suggerire un elenco degli argomenti che dovrei imparare nell'ordine decrescente della loro priorità?

Devo saperlo:

  • Ricerca?
  • Ordinamento?
  • Grafici / Alberi?

etc?

    
posta Chankey Pathak 12.10.2010 - 10:37
fonte

4 risposte

17

L'introduzione agli algoritmi di Cormen è un buon libro per alcune basi teoriche di base.

Detto questo, la maggior parte degli algoritmi e delle strutture dati sono già stati codificati, testati e ottimizzati da altri, e non c'è motivo di riattribuirli ancora una volta. Per essere uno sviluppatore Java di successo devi sapere The Collections Framework inside out.

    
risposta data 12.10.2010 - 11:12
fonte
8

Se vuoi essere un programmatore di qualsiasi tipo, devi capire in dettaglio tutte le strutture di base dei dati (stack, code, array, liste collegate, hashtables, alberi ecc.). Basta almeno che tu possa implementare qualcuno di loro per te stesso se ti trovi in un mondo senza quadri di collezioni per fare il lavoro per te.

Per quanto riguarda gli algoritmi, mi sembra che siano più strumenti per i lavori, mentre le strutture dei dati sono elementi fondamentali. Non penso sia altrettanto importante conoscere i dettagli su come implementare ogni algoritmo in cui potresti imbatterti. Quello che devi essere in grado di fare è valutare quanto bene un algoritmo funzionerà per un determinato scopo. A volte la differenza tra la prima ricerca in profondità e in ampiezza o il tipo di ordinamento che esegui sui tuoi dati può fare una grande differenza per le prestazioni o il successo generale del tuo codice, quindi sapere come giudicare è molto importante.

    
risposta data 12.10.2010 - 12:00
fonte
0

Oltre alle altre risposte, vorrei solo aggiungere che lo studio degli algoritmi non è solo per conoscere tecniche conosciute (che è ancora importante), ma anche per essere in grado di comprendere il processo di pensiero che va a escogitare una soluzione a un problema che incontri nella vita reale, non necessariamente ben conosciuto.

    
risposta data 12.10.2010 - 16:54
fonte
0

I am learning Java now a days.

I want to be a successful enterprise developer. Then what algorithms and data structures I should be well versed with? What books would you recommend me?

To be a successful Java developer, do I need to know all the advanced algorithms such as those given in CLRS?

Can you suggest me a list of the topics that I should learn in the descending order of their priority?

Tell me the name of some topics that I must know. Like Searching, Sorting, Graphs, Trees etc?

È positivo che tu sia desideroso di estendere e migliorare le tue capacità di programmazione. Tuttavia, è importante non trattare gli algoritmi come un catalogo di cose da memorizzare. Quello che devi sapere per diventare un buon sviluppatore (in Java o qualsiasi altra cosa) è comprendere l'analisi algoritmica.

Si impara imparando alcune strutture e algoritmi di dati, e che imparano ad analizzare le loro prestazioni in termini di tempo e spazio (memoria). Ricerca, ordinamento, grafici, alberi, cumuli, pile e tutte quelle cose buone. Ciò dovrebbe anche seguire alcune nozioni di base della teoria del calcolo e della matematica discreta (anche se nel regno di Java non usiamo mai direttamente questi due argomenti - i loro benefici sono indiretti.)

Separare l'apprendimento di un linguaggio di programmazione (nel tuo caso Java) con l'apprendimento di analisi algoritmica (che è diversa dalla "memorizzazione" di algoritmi e strutture dati).

George T. Heineman, Gary Pollice e Stanley Selkow "Algorithms in a Nutshell" è un buon inizio. "Algoritmi" di Sanjoy Dasgupta, Christos Papadimitriou e Umesh Vazirani è un altro buon libro di testo per studenti.

Il miglior pensiero è quello di prendere 9-12 corsi di credito in programmazione prima di prendere un corso di laurea di 3000 livelli in algoritmi. Salvo che, l'autoapprendimento con i due libri che ho citato potrebbe essere una buona alternativa (l'autoapprendimento potrebbe non essere per tutti, però.)

Buona fortuna!

    
risposta data 18.10.2010 - 21:41
fonte

Leggi altre domande sui tag