PHP va bene per algoritmi e strutture dati?
Per impararli, sì, una volta che abbandoni un'abitudine: usare un array per tutto. L'array di PHP è così flessibile da fare da lista, dizionario e pila, ed è proprio questo che nasconde il costo di ogni operazione. Costruisci le strutture da te e PHP diventa un linguaggio del tutto valido per ragionare sugli algoritmi, e quello naturale per i colloqui se PHP è il tuo lavoro.
Quali classi SPL corrispondono a quali strutture dati?
SplStack e SplQueue sono una pila e una coda, entrambe costruite su SplDoublyLinkedList; SplMinHeap e SplMaxHeap sono heap; SplPriorityQueue è un max-heap ordinato per priorità; e SplFixedArray è un array a dimensione fissa con indici interi che usa meno memoria di un array. Il semplice array è la tua tabella hash. Non esiste una classe per alberi, trie o grafi, quindi quelli li scrivi tu, nel primo e nel secondo passaggio.
Perché in PHP array_shift è lento per una coda?
Perché dopo aver rimosso il primo elemento rinumera da zero ogni chiave intera rimanente, toccando tutto l'array: una coda basata su array_shift costa O(n) per ogni estrazione, e tempo quadratico per svuotarla. Usa SplQueue, oppure tieni un indice di testa nell'array e fallo avanzare. Nel primo passaggio costruisci una coda da te, il modo più sicuro per vedere la differenza.
In PHP sort() è stabile?
Da PHP 8.0, sì: sort(), usort(), asort() e le altre funzioni di ordinamento mantengono gli elementi uguali nel loro ordine originale. Prima della 8.0 non c'era questa garanzia, quindi il codice che dipendeva dall'ordine degli elementi uguali poteva comportarsi in modo diverso tra una versione e l'altra. Degli otto ordinamenti del terzo passaggio, merge sort e insertion sort sono stabili, quicksort e heap sort no; alla fine sai perché.
Quali corsi di questo percorso non sono insegnati in PHP?
Tre: la programmazione dinamica e la serie di colloqui in Python, insegnate in Python, e la manipolazione dei bit, insegnata in C++. Sono elencati dopo i passaggi, ognuno con un link che lo apre nel suo linguaggio. Una tabella di memoizzazione in PHP è un array con chiave il sottoproblema. Una trappola quando porti i trucchi sui bit: se entrambi gli operandi di &, | o ^ sono stringhe, PHP lavora sui valori in byte dei loro caratteri e restituisce una stringa, quindi assicurati prima che i valori siano interi.
Devo conoscere PHP prima di iniziare questo percorso?
Almeno funzioni, array, cicli e classi, dato che un nodo è naturalmente un oggetto con una proprietà $next. Se sono argomenti nuovi, il corso di PHP di Coddy ti porta prima a quel punto, gratis, e questo percorso riprende da dove finisce.