La forza di ogni programmatore è nella sua conoscenza. Sì, anche la capacità di google bene non è all'ultimo posto, ma tuttavia deve esserci una certa conoscenza, sulla base della quale si forma il modo di pensare dello sviluppatore. Più approfondita è questa conoscenza, più soluzioni interessanti un programmatore può trovare. Una delle parti di tale “base” sono le strutture dati e gli algoritmi. Come puoi espandere le tue conoscenze in questa direzione? Come opzione, trova un libro, la cui conoscenza diventerà una riserva ignifuga e una base per ulteriori studi. Per me, un libro del genere è stato “Java Data Structures and Algorithms” di Robert Laforet .
Per chi
Il pubblico di questo libro può essere una gamma molto ampia di persone, perché sarà utile sia per coloro che hanno appena imparato la sintassi del linguaggio Java , sia per i programmatori praticanti, per una comprensione più profonda delle caratteristiche delle strutture dati e degli algoritmi .Riguardo a cosa
Questo libro è dedicato allo studio e all'uso delle strutture dati e degli algoritmi nella programmazione. Insegnerà al lettore come le strutture dei dati determinano il modo in cui i dati sono organizzati in memoria, nonché come gli algoritmi eseguono varie operazioni su queste strutture. Scaviamo un po' più a fondo e vediamo di cosa tratta esattamente questo libro:- Array. Le operazioni di inserimento, ricerca ed eliminazione negli array e negli array ordinati vengono trattate in dettaglio. Dimostra il funzionamento della ricerca lineare e binaria per array ordinati e non ordinati. Imparerai anche cos'è la sintassi O.
- Ordinamento. Vengono considerati tre semplici metodi di ordinamento: “bubble sort”, “selection sort”, “insertion sort”. Dal libro imparerai qual è il più lento e quale è il più semplice.
- Pile e code. Vengono prese in considerazione le strutture dati come stack, coda e coda di priorità, la loro efficacia e l'implementazione in Java.
- Elenchi collegati. Il libro parla degli elenchi con collegamento doppio e doppio, della loro efficienza e di come vengono eseguite le operazioni di inserimento, ricerca ed eliminazione. Vengono trattati anche gli iteratori e i metodi che richiedono.
- Ricorsioni. Le ricorsioni sono considerate in varie situazioni, come ad esempio: calcolo di numeri triangolari e fattoriali, costruzione di anagrammi, esecuzione di ricerche binarie ricorsive, risoluzione del puzzle della Torre di Hanoi, implementazione del merge sort, risoluzione del problema dello zaino.
- Ordinamenti non banali. Vengono considerati metodi più avanzati: Shell sort, quick sort e radix sort, i loro algoritmi, l'efficienza.
- Alberi binari. Vengono considerati gli alberi binari di ricerca bilanciati, come funzionano, le loro operazioni di inserimento e cancellazione, i vari tipi di attraversamento, ricerca del minimo e del massimo, ricerca del successore. Verrà trattato anche il Codice Huffman.
- Alberi rossi e neri. Consideriamo una delle varietà più efficaci di alberi bilanciati, le loro operazioni di rotazione e cambio colore necessarie per il bilanciamento.
- Alberi 2-3-4. Alberi di questo tipo sono descritti come un esempio di alberi multipercorso; vengono discussi il loro funzionamento e la relazione con gli alberi B, utilizzati per l'archiviazione di dati esterni.
- Tabelle hash. Vengono trattati l'hashing e i suoi vari metodi, come il sondaggio lineare e quadratico, il doppio hashing e il metodo di concatenamento. Puoi anche scoprire come utilizzare l'hashing per organizzare l'archiviazione di file esterni.
- Piramidi. Questo è un tipo speciale di albero utilizzato per implementare in modo efficiente le code con priorità. Il libro discute i meccanismi di funzionamento dell'inserimento, della cancellazione e del riarrangiamento. Imparerai anche cos'è la permutazione piramidale e come può essere implementata in Java.
- Grafici. Vengono presentati grafici ponderati e non ponderati, algoritmi per la ricerca al loro interno e algoritmi utilizzati per trovare i percorsi trasversali più brevi.
Cosa sono le app Workshop
Le applicazioni del workshop vengono utilizzate per dimostrare queste strutture e algoritmi . Le applicazioni sono progettate come applet Java che possono essere eseguite in un browser. Le applicazioni del workshop creano diagrammi grafici che mostrano come funziona un algoritmo o una struttura dati. Ad esempio, in un'applicazione progettata per visualizzare le colonne in ordine crescente, ogni volta che si fa clic su un pulsante nell'istogramma verrà eseguito il passaggio successivo. In questo caso verranno visualizzati i valori delle variabili coinvolte in questo algoritmo in modo da poter vedere come viene eseguito il codice (che ricorda la descrizione di un debugger , giusto?).Come scaricare e installare Workshop
- Puoi scaricare le applet qui .
- Fare clic su WorkshopApplets.ZIP e scaricare l'archivio con le applet.
- Per comprendere le applet, puoi leggere questo argomento e i relativi commenti.
Pro del libro
- molto facile da leggere, molti esempi sono spiegati quasi “con le dita”;
- apre gli occhi su molte cose “classiche”, senza l'uso di formule matematiche complesse. Beh, quasi senza di loro :)
- Sebbene gli esempi siano in Java, le azioni che si verificano nel codice sono spiegate in grande dettaglio dal testo seguente e dai commenti nel codice. Pertanto, può essere letto da un utente di qualsiasi linguaggio di programmazione, poiché gli esempi di codice sono piuttosto semplici: si leggono quasi come uno pseudocodice.
Contro del libro
- Nonostante la spiegazione "sulle dita", ci sono delle lacune. Per spiegare l'ordinamento dell'array, l'autore disegna un'immagine di una squadra di calcio, ma lì l'ordinamento della shell non è praticamente descritto: non sono riuscito a capirlo e a leggerlo su Internet;
- Potrebbero esserci errori di battitura, solitamente nelle immagini o nelle tabelle;
- alcuni codici sono piuttosto obsoleti.
Analoghi
Consiglio analoghi di questo libro o quelli che lo seguono (per chi vuole continuare a studiare):- “Algoritmi in Java” di Robert Sedgwick;
- “Algoritmi: costruzione e analisi” di Thomas Cormen.
GO TO FULL VERSION