You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Глава 19. Структури от данни – съпоставка и препоръки 809<br />
При прочитането на телефонния указател чрез разделяне по вертикална<br />
черта "|" от него се извличат трите колони (име, град и телефон) от всеки<br />
негов ред. След това името се разделя на думи и всяка от думите се добавя<br />
в хеш-таблицата. Допълнително се добавя и всяка дума, комбинирана с<br />
града (за да можем да търсим по двойката име + град).<br />
Следва втората част на алгоритъма – изпълнението на командите. В нея<br />
файлът с командите се чете ред по ред и всяка команда се обработва.<br />
Обработката включва парсване на командата, извличането на име или име<br />
и град от нея и търсене по даденото име или име, комбинирано с града.<br />
Търсенето се извършва директно в хеш-таблицата, която се създава при<br />
прочитане на телефонния указател.<br />
За да се игнорират разликите между малки и главни букви, всички ключове<br />
в хеш-таблицата се добавят с малки букви и при търсенето ключовете се<br />
търсят също с малки букви.<br />
Избор на структури от данни – изводи<br />
От множеството примери става ясно, че изборът на подходяща структура от<br />
данни силно зависи от конкретната задача. Понякога се налага структурите<br />
от данни да се комбинират или да се използват едновременно няколко<br />
структури.<br />
Кога каква структура да подберем зависи най-вече от операциите, които<br />
извършваме, така че винаги си задавайте въпроса "какви операции трябва<br />
да изпълнява ефективно структурата, която ми трябва". Ако знаете<br />
операциите, лесно може да съобразите коя структура ги изпълнява найефективно<br />
и същевременно е лесна и удобна за ползване.<br />
За да изберете ефективно структура от данни, трябва първо да измислите<br />
алгоритъма, който ще имплементирате и след това да потърсите подходящите<br />
структури за него.<br />
Тръгвайте винаги от алгоритъма към структурите от<br />
данни, а не обратното.<br />
Външни библиотеки с .NET колекции<br />
Добре известен факт е, че библиотеката със стандартни структури от данни<br />
в .NET Framework System.Collections.Generic е доста бедна откъм<br />
функционалност. В нея липсват имплементации на основни концепции в<br />
структурите данни, мултимножества и приоритетни опашки, за които би<br />
трябвало да има както стандартни класове, така и базови системни<br />
интерфейси.<br />
Когато ни се наложи да използваме структура от данни, която стандартно<br />
не е имплементирана в .NET Framework имаме два варианта:<br />
<br />
Първи вариант: имплементираме си сами структурата от данни.<br />
Това дава гъвкавост, тъй като имплементацията ще е съобразена