Czy PHP nadaje się do nauki algorytmów i struktur danych?
Do nauki tak, gdy porzucisz jeden nawyk: sięganie po array do wszystkiego. Tablica w PHP jest na tyle elastyczna, że może być listą, słownikiem i stosem, i właśnie to ukrywa koszt każdej operacji. Zbuduj struktury samodzielnie, a PHP okaże się całkiem dobrym językiem do rozumowania o algorytmach i naturalnym językiem na rozmowę, jeśli pracujesz w PHP.
Które klasy SPL odpowiadają którym strukturom danych?
SplStack i SplQueue to stos i kolejka, obie zbudowane na SplDoublyLinkedList. SplMinHeap i SplMaxHeap to kopce, SplPriorityQueue to kopiec maksymalny uporządkowany według priorytetu, a SplFixedArray to tablica o stałym rozmiarze z indeksami całkowitymi, zużywająca mniej pamięci niż array. Zwykła array to twoja tablica mieszająca. Nie ma klasy drzewa, drzewa trie ani grafu, więc te piszesz samodzielnie, w krokach pierwszym i drugim.
Dlaczego array_shift jest wolne jako kolejka w PHP?
Bo po usunięciu pierwszego elementu numeruje od zera każdy pozostały klucz całkowity, co dotyka całej tablicy: kolejka zbudowana na array_shift kosztuje O(n) za każde zdjęcie elementu i czas kwadratowy na jej opróżnienie. Użyj SplQueue albo trzymaj indeks początku tablicy i przesuwaj go. W kroku pierwszym samodzielnie budujesz kolejkę, co jest najpewniejszym sposobem, żeby zobaczyć różnicę.
Czy sort() w PHP jest stabilne?
Od PHP 8.0 tak: sort(), usort(), asort() i pozostałe funkcje sortujące zachowują oryginalną kolejność równych elementów. Przed wersją 8.0 nie dawały takiej obietnicy, więc kod zależny od kolejności równych elementów mógł zachowywać się różnie w różnych wersjach. Z ośmiu sortowań z kroku trzeciego sortowanie przez scalanie i przez wstawianie są stabilne, a quicksort i sortowanie przez kopcowanie nie. Po tym kroku wiesz dlaczego.
Które kursy z tej ścieżki nie są prowadzone w PHP?
Trzy: programowanie dynamiczne i seria rekrutacyjna w Pythonie, prowadzone w Pythonie, oraz operacje na bitach, prowadzone w C++. Są wymienione po krokach, każdy z linkiem, który otwiera go w jego własnym języku. Tablica memoizacji w PHP to array z kluczami odpowiadającymi podproblemom. Jedna pułapka przy przenoszeniu sztuczek bitowych: jeśli oba operandy &, | albo ^ są łańcuchami znaków, PHP operuje na wartościach bajtów ich znaków i zwraca łańcuch, więc najpierw upewnij się, że wartości są liczbami całkowitymi.
Czy muszę znać PHP, zanim zacznę tę ścieżkę?
Przynajmniej funkcje, tablice, pętle i klasy, bo węzeł to w naturalny sposób obiekt z właściwością $next. Jeśli to dla ciebie nowość, kurs PHP w Coddy najpierw cię tam doprowadzi, za darmo, a ta ścieżka zaczyna się tam, gdzie on się kończy.