Menu
Coddy logo textTech
Ścieżka nauki

Algorytmy i struktury danych w Rust

Biblioteka standardowa Rusta ma większość struktur (Vec, VecDeque, HashMap, BTreeMap, BinaryHeap), a borrow checker ma swoje zdanie o tych, które piszesz samodzielnie: lista jednokierunkowa to Option<Box<Node>>, a drzewo z odnośnikami do rodzica wymaga Rc, RefCell i Weak. W tej ścieżce budujesz każdą strukturę w Rust, potem sortujesz, stosujesz rekurencję i przeszukujesz z nimi grafy, a na koniec rozwiązujesz oceniane zadania rekrutacyjne. Za darmo, w przeglądarce, z certyfikatem w większości kursów.

377 lekcje228 wyzwania702 pytania quizowe

Algorytmy i struktury danych w Rust krok po kroku

38 kursy377 lekcje228 wyzwania702 pytania quizowe

Każdy krok to zestaw istniejących kursów Coddy, a każdy przycisk Start otwiera je w Rust. Trzy kursy, które nie są jeszcze prowadzone w Rust, są wymienione po krokach.

  1. 1
    Zacznij ten krokZacznijStos, kolejka, drzewo binarne, tablica mieszająca i lista wiązana, każda struktura zbudowana od zera w Rust, a potem użyta do rozwiązywania zadań. W Rust węzeł, który jest właścicielem następnego, to Option<Box<Node>>, więc właśnie tu własność zaczyna wydawać się naturalna, a po tym kroku wiesz, co robią za ciebie Vec, VecDeque i HashMap.Zacznij
  2. 2
    Zacznij ten krokZacznijLista dwukierunkowa, kopce i kolejki priorytetowe, drzewa trie, grafy i samorównoważące się drzewo AVL. Lista dwukierunkowa jest w Rust tą trudną, bo do każdego węzła prowadzą dwa połączenia. Po tym kroku BinaryHeap to kopiec, którego kod znasz, domyślnie z największym elementem na początku, a BTreeMap to uporządkowane drzewo, które rozumiesz.Zacznij
  3. 3
    Zacznij ten krokZacznijSortowanie bąbelkowe, przez wybieranie, przez wstawianie, przez scalanie, szybkie, przez kopcowanie, przez zliczanie i pozycyjne, napisane w Rust i oglądane w wizualizatorze. sort jest stabilne, a sort_unstable zwykle szybsze. Po tym kroku potrafisz powiedzieć, ile kosztuje stabilność i kiedy z niej zrezygnować.Zacznij
  4. 4
    Zacznij ten krokZacznijWyzwania z rekurencji w Rust. Typ rekurencyjny potrzebuje Box, zanim kompilator nada mu rozmiar, a funkcja rekurencyjna działająca na nim dopasowuje każdy przypadek, Some albo None, tak jak dzielą się przypadek bazowy i rekurencyjny. Rust nie obiecuje optymalizacji wywołań ogonowych, więc wystarczająco głęboka rekurencja przepełnia stos i przerywa program. Programowanie dynamiczne i operacje na bitach są wymienione po krokach, bo prowadzi się je w Pythonie i C++.ZacznijOsobna strona
  5. 5
    Zacznij ten krokZacznijPrzeszukiwanie wszerz i w głąb, Dijkstra, Bellman-Ford, sortowanie topologiczne, Kruskal i Prim w Rust, na grafie zbudowanym w kroku drugim. Kolejka priorytetowa w algorytmie Dijkstry to w Rust BinaryHeap z Reverse((distance, node)): kopiec z kroku drugiego zamieniony w kopiec minimalny.Zacznij
  6. 6
Co dostajesz
Wszystko, czego potrzebujesz do nauki programowania

Ucz się w praktyce

Pisz prawdziwy kod, odpytuj bazy danych, twórz strony internetowe i opanuj prompty AI. Nasze interaktywne lekcje obejmują wszystkie umiejętności, których potrzebuje współczesny programista.

playground.js
Edytor kodu
1const greeting = "Hello, Coddy!"
2function sayHi(name) {
3    return greeting + " " + name
4}
5
bottombar Collapse icon
Test #1test Case Success icon
Test #2test Case Success icon
Test #3test Case Failure icon
Dane wejściowe
"Alex"
Wynik
"Hello, Coddy! Alex"

Buduj swoją serię

Ucz się regularnie i patrz, jak rosną twoje postępy! Śledź codzienny nawyk programowania, chroń serię dzięki zamrożeniom i zdobywaj nagrody za każdy dzień nauki.

12 dni serii

Wróć jutro, aby utrzymać serię!

fire Filled icon
left icon

January 2026

right icon

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

21

22

23

24

25

26

27

28

29

30

product Double Or Nothing icon

Podwójnie albo nic

Dzień 5 z 7

fire Freeze icon

Zamrożenie serii

2 left

Programuj wszędzie

Zabierz naukę programowania ze sobą! Bez konfiguracji i pobierania plików: po prostu otwórz i zacznij kodować. Dostępne na iOS, Androida i w przeglądarce, z oceną 4,9 gwiazdki.

Python
7Seria
250Wynik
5Energia
Zmienne
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Right Done icon
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Left Done icon
journey Hex Active Base iconjourney Hex Active Shadow iconjourney Hex Active Top iconjourney Lesson Theory Challenge icon
KONTYNUUJ
journey Path Right icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson Theory Challenge icon
journey Path Left icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson All icon
Ścieżka
Cele
Ranking
Profil
4.9
GwiazdkaGwiazdkaGwiazdkaGwiazdkaGwiazdka
Ocena

Nie uczysz się w pojedynkę

Rywalizuj w globalnych rankingach, zapraszaj znajomych po nagrody i świętujcie wspólnie swoje sukcesy. Z przyjaciółmi programuje się lepiej!

Liga Challenger
Liga ChallengerAwansuje 7 najlepszych
leaderboard First icon1
avatar 1 icon
fire Filled icon
Alex7+ Days
2840
leaderboard Second icon2
avatar 2 icon
fire Filled icon
Jordan7+ Days
2650
leaderboard Third icon3
avatar 3 icon
fire Filled icon
Sam7+ Days
2420
4
avatar 4 icon
Casey
2180
5
avatar placeholder icon
fire Filled icon
Morgan7+ Days
1950
leaderboard Arrow Up iconStrefa awansuleaderboard Arrow Up icon

Każdy sposób nauki

Czytaj, słuchaj, sprawdzaj się, pytaj AI albo wracaj do tego, co już znasz. Każda lekcja dopasowuje się do ciebie.

Wprowadzenie do zmiennych
Audio

Zmienna to nazwany pojemnik przechowujący wartość, do której możesz później odwołać się w programie.

W Pythonie tworzysz ją, pisząc nazwę, znak równości, a potem wartość, którą chcesz zapisać.

Wartość może się zmieniać: ponowne przypisanie po prostu wskazuje nazwą nową wartość.

1xZofia

Zdobądź certyfikat

Zdobywaj certyfikaty za każdy ukończony kurs. Dodaj je do profilu na LinkedIn i CV, aby pokazać pracodawcom swoje umiejętności programistyczne.

CoddyCertyfikat ukończenia
Certyfikat dlaJan Kowalskiza pomyślne ukończenie kursu
python iconPodstawy Pythona
Zweryfikowano
Datasty 2026
LinkedInDodaj do LinkedIn

Dlaczego warto uczyć się algorytmów w Rust z Coddy

  • Własność tam, gdzie jest najtrudniejsza. Listy wiązane i drzewa to miejsce, w którym reguły Rusta gryzą najpierw: każda wartość ma jednego właściciela, a te struktury potrzebują węzłów wskazujących na siebie nawzajem. Pisząc je, sprawiasz, że Box, Option::take, Rc<RefCell<T>> i Weak przestają być składnią i stają się decyzjami. Nie bez powodu znany przewodnik po tym języku nosi tytuł Learning Rust With Entirely Too Many Linked Lists.
  • Kolekcje o jasnych kosztach. Vec<T> to twój stos, VecDeque<T> to bufor cykliczny i twoja kolejka, HashMap to tablica mieszająca zabezpieczona przed celowymi kolizjami, BTreeMap to uporządkowane B-drzewo, a BinaryHeap<T> to kopiec maksymalny. Zbuduj struktury raz, a będziesz wiedzieć, której potrzebuje zadanie i dlaczego algorytm Dijkstry opakowuje swoje wpisy w Reverse.
  • Prawie cała ścieżka w Rust. Każda struktura danych, sortowanie, algorytm grafowy, wyzwanie z rekurencji i pakiet rekrutacyjny jest prowadzony w Rust. Trzy kursy są prowadzone w innych językach i wymienione po krokach, każdy z linkiem: programowanie dynamiczne i seria rekrutacyjna w Pythonie oraz operacje na bitach w C++. Operacje na bitach przenoszą się z jedną zmianą zapisu: Rust zapisuje NOT jako !x, a ustawione bity liczy przez count_ones().
  • Oceniane jak na rozmowie rekrutacyjnej. Każda lekcja kończy się wyzwaniem w Rust sprawdzanym przez testy, a gdy coś nie przechodzi albo się nie kompiluje, Bugsy czyta twój kod i naprowadza cię na poprawkę, nie podając gotowej odpowiedzi. Darmowy certyfikat w większości kursów, każdy do zweryfikowania pod własnym adresem URL.

Najczęstsze pytania o algorytmy i struktury danych w Rust

Czy Rust nadaje się do nauki algorytmów i struktur danych?

Do korzystania z nich bardzo: standardowe kolekcje są szybkie i dobrze udokumentowane, sort jest stabilne, a bezpieczny Rust wyklucza wiszące wskaźniki i wyścigi danych już na etapie kompilacji, bez garbage collectora. Pisanie struktur opartych na wskaźnikach jest trudniejsze niż w C czy Javie, bo własność wyklucza współdzielone, mutowalne połączenia, chyba że świadomie sięgniesz po Rc i RefCell, a lista dwukierunkowa czy drzewo ze wskaźnikami do rodzica składają się właśnie z nich. Ta trudność jest też lekcją: gdy potrafisz je napisać w Rust, wiesz dokładnie, kto jest właścicielem czego.

Które kolekcje Rusta odpowiadają którym strukturom danych?

Vec<T> to tablica dynamiczna i twój stos, VecDeque<T> to bufor cykliczny i twoja kolejka, HashMap i HashSet to tablice mieszające (domyślnie SipHash, odporny na celowe kolizje kosztem pewnej szybkości), BTreeMap i BTreeSet to uporządkowane B-drzewa, BinaryHeap<T> to kopiec maksymalny, a LinkedList<T> to lista dwukierunkowa, którą rzadko wybierzesz zamiast Vec czy VecDeque. Nie ma typu drzewa trie ani grafu, te budujesz samodzielnie.

Dlaczego listę wiązaną tak trudno napisać w Rust?

Bo każda wartość ma dokładnie jednego właściciela. Lista jednokierunkowa pasuje do tej reguły: każdy węzeł jest właścicielem następnego przez Option<Box<Node>>. Lista dwukierunkowa albo drzewo z odnośnikami do rodzica już nie, bo do każdego węzła prowadzą dwa wskaźniki, więc sięgasz po Rc<RefCell<Node>> z Weak dla odnośników wstecznych albo trzymasz węzły w Vec i łączysz je indeksami. Learning Rust With Entirely Too Many Linked Lists powstał dlatego, że tak wiele osób utyka właśnie tutaj.

Jak uzyskać kopiec minimalny w Rust?

BinaryHeap<T> to kopiec maksymalny, więc opakuj każdy element w std::cmp::Reverse: wstaw Reverse(x), a najmniejsze x wyjdzie pierwsze. W algorytmie Dijkstry wstawiaj Reverse((distance, node)), a krotka porówna się najpierw po odległości. Gdy w kroku drugim samodzielnie napiszesz kopiec, odwrócenie jego porządku staje się oczywiste.

Które kursy z tej ścieżki nie są prowadzone w Rust?

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 Rust to Vec albo HashMap, a przepełnienie liczby całkowitej w kompilacji debug wywołuje panikę, więc sztuczka bitowa, która polega na zawijaniu, zapisuje to jawnie przez wrapping_add albo wrapping_mul.

Czy muszę znać Rusta, zanim zacznę tę ścieżkę?

Przynajmniej własność, pożyczanie, struktury, typy wyliczeniowe i Option. Box i traity pomagają. Jeśli to dla ciebie nowość, kurs Rusta w Coddy najpierw cię tam doprowadzi, za darmo, a ta ścieżka zaczyna się tam, gdzie on się kończy.

Inne ścieżki nauki

Te same kursy, ułożone pod inną rolę. Postępy się przenoszą: kurs ukończony na jednej ścieżce liczy się na każdej ścieżce, która go zawiera.

Wszystkie ścieżki nauki
Ilustracja języków programowania w Coddy

Zacznij ścieżkę Algorytmy i struktury danych za darmo

Zacznij naukę