Il mio consiglio: impara un sottoinsieme di Java, quindi impara alcuni algoritmi di base, quindi scopri dove vuoi andare da lì.
Non è necessario conoscere tutto Java per sperimentare con gli algoritmi di implementazione. Avrai bisogno di essere in grado di avvolgere alcuni metodi (spesso solo uno) in una singola classe (e anche solo perché Java insiste sul fatto che tutto è una classe). Avrai bisogno di costrutti e matrici condizionali e in loop. Per le strutture di dati, probabilmente dovrai comprendere i riferimenti Java, anche se potresti essere in grado di simulare i puntatori utilizzando gli interi come indici di array.
Il punto è che gli algoritmi sono importanti, ma su scala relativamente piccola. Le strutture dati richiedono in genere alcuni algoritmi per farle funzionare. Ma non è necessaria la comprensione di problemi su larga scala come la progettazione orientata agli oggetti per sperimentare con gli algoritmi.
EDIT
Dai commenti, vedo che siete già in "dove andare da lì" stadio.
Non dimenticare gli algoritmi (o la matematica discreta) perché non ti interessa l'analisi, però. Una comprensione ampia (non necessariamente approfondita) è una risorsa utile: sono ideali per i metodi di risoluzione dei problemi.
Ad esempio, sono stato recentemente confuso in un problema di ordine delle dipendenze su come gestire i cicli. Mi ero dimenticato di "componenti fortemente connessi" nei digrammi. Una volta che mi è stato ricordato, il problema è diventato banale - non ha senso cercare di ordinare all'interno di un componente fortemente connesso, ma questi componenti formano un digrafo aciclico. Da lì, la risposta è solo una sorta di topologia.
Conoscere gli ordinamenti topologici rende l'ultimo passaggio banale. Avendo dimenticato componenti fortemente connessi mi è costato un bel po 'di tempo. Capire come funziona l'algoritmo di componenti fortemente collegato a Tarjans ... Wikipedia e pochi minuti con carta e penna sono sufficienti, una volta che sai cosa cercare.
In realtà, dovrei confessare: "Mi è stato ricordato" significa che ho consultato un vecchio articolo del Dr. Dobbs sullo smistamento topologico che utilizzava lo stesso approccio.
Qual è il tuo background di programmazione? Hai una comprensione degli algoritmi e delle strutture dati? – quantumSoup
È necessario avere una comprensione degli algoritmi prima di implementarli, in Java o per qualsiasi linguaggio di programmazione. –
@ Raze2dust - hai bisogno anche di un linguaggio per descrivere gli algoritmi prima che tu possa capirli. L'inglese non è così grande per questo, e la matematica raramente ha senso da solo. E senza un test oggettivo per gli esperimenti sugli algoritmi (funziona davvero), è facile ottenere alcune idee sbagliate profondamente radicate. – Steve314