C# jest innowacyjnym i rozciągliwym językiem programowania. Aby w pełni skorzystać z jego zalet, trzeba płynnie posługiwać się przystępnymi w nim strukturami danych i algorytmami, pozwalają one bowiem na efektywnie organizowanie danych i mają znaczący wpływ na sprawność aplikacji. Z punktu widzenia programisty kluczowe jest ich właściwe zaimplementowanie: wybór właściwej struktury danych i związanego z nią algorytmu stanowi o jakości wyprodukowanego kodu. Na przykład w celu wykonywania wysokowydajnych operacji na zbiorach warto użyć zbioru haszowanego. Inne konstrukcje pozwalają na rozwiązywanie kolejnych problemów.
Dzięki tej książce nauczysz się stosowania struktur informacji i implementacji najważniejszych algorytmów w języku C#. Najpierw zapoznasz się z najprostszymi strukturami informacji o swobodnym dostępie - z tablicami, a także listami. Wyjaśniono tu na dodatek działanie struktur danych o dostępie sekwencyjnym, opartych na stosach i kolejkach. Przedstawiono wykorzystanie słowników, dzięki którym można mapować klucze na wartości i prowadzić prędkie wyszukiwanie. Przystępnie opisano korzystanie z najbardziej zaawansowanych konstrukcji, takich jak drzewo binarne, binarne drzewo poszukiwań, drzewo samorównoważące się i kopiec. W końcowej części książki wyszukasz atrakcyjną analizę użytkowania grafów i związanych z nimi algorytmów, takich jak przeszukiwanie grafu, znikome drzewo rozpinające, kolorowanie węzłów oraz znajdowanie najkrótszej ścieżki.
Najciekawsze zagadnienia ujęte w książce:
najróżniejsze typy danych w C#: wartościowe i referencyjne
tablice i listy, a także algorytmy sortowania
operacje na zbiorach, a także wbudowany typ HashSet
struktury drzewiaste i kopce: binarne, dwumianowe oraz Fibonacciego
algorytmy oparte na grafach, w tym algorytm Dijkstry
C#. Liczy się algorytm i adekwatna struktura informacji!
Dr Marcin Jamro jest programistą i architektem najróżniejszych aplikacji. Aktualnie pełni funkcję prezesa producenta TITUTO Sp. Z o.o. Z siedzibą w Rzeszowie. Ma ponadto dorobek naukowy: jest autorem kilku publikacji i organizatorem konferencji naukowych. Zdobył atesty: MCP, MCTS i MCPD. Wyjątkowo interesuje się inżynierią oprogramowania i zarządzaniem projektami.