25.07.2017 Views

Intro-CSharp-Book-v2015

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 />

Това дава гъвкавост, тъй като имплементацията ще е съобразена

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!