Програмиране 51 - Интуиция за "Структури от Данни"

1

2

3

Що е то?

  • Структура, в която пазим данни (no shit)

  • В различните структури, пазим и организираме данните по различен начин.

  • Дефинираме "операции" върху нашите структури.

  • Често се интересуваме от алгоритмичната сложност на тези операции.

  • Изисква имплементация.

Пример - масивите.

  • Структура, която съдържа фиксиран брой данни от един и същи тип.

  • Елементите се намират "един до друг" в подредбата си.

  • Нативна имплементация за Java.

int[] array = {1, 2, 3, 4};
System.out.println(array.length);

Операциите в/у масив

  • Създаване масив по тип и размер.

  • Достъп на елемент по индекс

  • Промяна на стойност на елемент по индекс

  • Взимане на първоначалния размер на масива.

Операциите в/у масив

array = createArray(type, size)
element = getElement(array, index)
setElement(array, index, value)
len = length(array)

Операциите в/у масив

getElement(arr, index)
setElement(arr, index, value)
length(array)
Операция Сложност по време
createArray(type, n)
O(n)
O(n)O(n)
O(1)
O(1)O(1)
O(1)
O(1)O(1)
O(1)
O(1)O(1)

Обобщение до сега

  • Имаме набор от стойности, които може да съхраняваме в нашата структура.

  • Имаме набор от операции, които може да извършваме върху нашата структура.

  • Имаме и съответните алгоритмични сложности на тези операции.

  • Научно, на това му казват "Abstract Data Type".

  • Тоест, може да си говорим за структури без тяхната конкретна имплементация.

Ние ще се интересуваме и от конкретни имплементации.

Операциите може да ги записваме по два начина

operation(structure, data)
structure.operation(data)

Структурите от данни са прагматични.

ArrayList<String> langs = new ArrayList<String>();
langs.add("Java");
langs.add("Python")
HashMap<String, String> typings = new HashMap<>();
typings.put("Java", "Static");
typings.put("Python", "Dynamic");

Структурите се използват често в по-бързи версии на алгоритми.

Ние ще започнем с така наречените "линейни" структури - вариации в/у списъци.

Programming 51 - Intuition for Data Structures

By Hack Bulgaria

Programming 51 - Intuition for Data Structures

  • 1,482