Loading...

Основни структури от данни и тяхното приложение

avatar Мария Вълчева 3 минути
Основни структури от данни и тяхното приложение

Като програмист ще ти се налага да работиш с различни съвкупности от данни при решаването на определени задачи. За да можеш да моделираш и правиш операции с тези данни, те трябва да бъдат организирани в определени представяния, наречени структури.


По повод предстоящия курс Data Structures Fundamentals with C#, ще ти представя някои от основните структури от данни, с които ще се сблъскаш и вероятно ще използваш в практиката си. Курсът е подходящ за прохождащи програмисти – ако можеш да боравиш свободно с променливи, цикли, условни конструкции, масиви и вече имаш основни познания по ООП, не се колебай да се запишеш.

Защо са ти необходими структурите от данни?

Ако целта ти е да бъдеш наистина добър C# програмист, който си разбира от работата, ще ти се наложи да познаваш основните видове структури от данни и алгоритмите, които можеш да използваш, за да работиш с тях. Именно те стоят в основата на добрите практики за разработка и ще ти помогнат да развиеш алгоритмичното си мислене.


Когато избираш в каква структура да запазваш данните и с какви алгоритми да ги обработваш, има редица неща, които трябва да съобразиш – подходяща ли е структурата, каква е сложността на алгоритъма, съответно това ли е оптималната комбинация. За улеснение, по-долу ще откриеш основни структури със съвет в какви случаи е най-удачно да ги използваш:

Масиви

Масивите са съвкупности от фиксиран брой елементи от даден тип и се достъпват по индекс. Добавянето на елемент е бавна операция и затова е най-добре масивите да се използват при обработката на фиксиран брой елементи, напр. при сортирането на числа. Ако задачата изисква от теб да промениш броя елементи в даден момент, масивът не е удачен избор.

Динамичен масив (Списък)

Една от най-използваните структури от данни, динамичният масив няма фиксиран размер и елементите в него могат да се достъпват по индекс. Той е подходящ, когато често трябва да добавяш нови елементи в него и дължината не е предварително известна. Не е толкова подходяща структура, когато искаш бързо да намираш или изтриваш елементи.

Свързан списък

В свързания списък се съхранява подредена съвкупност от елементи. Добавянето е сравнително бързо, макар и по-бавно, отколкото при динамичния масив. В свързания списък няма индексиране, съответно и търсенето е сравнително бавна операция. Подходящ е при премахване на елементи от двата края на съвкупността, но обикновено вместо него се използва динамичен масив.

Опашки и стекове

Колкото си приличат, толкова и се различават тези две структури. Опашката представя поведението „пръв влязъл, пръв излязъл“, докато стекът – „последен влязъл, пръв излязъл“. Опашката е естествено представяне на хора, задачи или други елементи, които се обработват последователно, както са постъпили. При стека, достъпен е последният влязъл елемент, докато дъното не е. Можем да добавяме най-горен елемент, да го вадим или да проверяваме какъв е без да го вадим.

Речници

Две популярни структури от тип Речник са реализираните с хеш-таблица (Dictionary) и реализираните с дърво (SortedDictionary). И двата вида съдържат двойки ключ-стойност. Основната разлика е, че при реализираните с дърво речници ключовете се сортират по големина, а в случая с хеш-таблицата, елементите се подреждат на почти случаен принцип. Използването на хеш-таблици позволя бързо добавяне и търсене на елементи по ключ, но заложи на реализиране с дърво, ако елементите ще ти трябват сортирани.

Множество

Множеството също е структура от данни, която може да бъде реализирана с хеш-таблица (HashSet) или с дърво (SortedSet). При множества, реализирани с хеш-таблица, в съвкупността от елементи няма повтарящи се такива. Използвай ги, ако искаш бързо да добавяш елементи и да проверяваш дали елементът вече е част от множеството.


От друга страна, реализираното с дърво множество е частен случай на SortedDictionary, в който има съвпадение на ключове и стойности. Пример за приложението му би било търсенето на определени думи в текстов файл и подреждането им по азбучен ред. Отново се проверява дали елементът е част от множеството, но е най-често приложимо, когато ти трябва сортиране във възходящ ред.

Научи се да подбираш правилната структура

Колкото повече практикуваш, толкова по-лесно ще различаваш в кой случай кои структури от данни ще са ти от най-голяма полза. Това е ключово умение за успешното ти развитие като програмист. На базово ниво, сигурно вече познаваш част от изброените структури, а ако искаш да надградиш познанията и уменията си, запиши се за курса Data Structures Fundamentals with C# ето ТУК. Започваме на 8 февруари!