От массивов к деревьям: понимание строительных блоков эффективного программирования

Проще говоря, структура данных — это просто единицы хранения, которые организуют и хранят данные.

Будь то жизнь или данные, нам нужно их организовать, поскольку это позволяет нам лучше управлять и понимать информацию вокруг нас. В жизни это помогает более эффективно управлять временем и расставлять приоритеты задач… можно достичь с помощью таких методов, как составление списка дел, постановка целей или избегание прокрастинации, а также организация дома и рабочего места. В Data это помогает эффективно управлять данными и анализировать их. Существует несколько способов организации данных, включая использование баз данных, таблиц и электронных таблиц. Чтобы упорядочить данные определенным образом, вы также можете использовать такие структуры данных, как массивы, связанные списки, стеки, очереди, хеш-таблицы и деревья. Это может помочь приложениям, управляемым данными, работать более плавно и сделать возможным более эффективный поиск и анализ данных.

В целом, организованность важна для управления и осмысления информации, которая нас окружает. Мы можем повысить нашу производительность, снизить уровень стресса и улучшить производительность систем, управляемых данными, применяя на практике передовые организационные методы.

Структура данных — это способ организации и хранения данных в компьютере, обеспечивающий эффективный доступ к ним и их изменение.

Наименьшая единица данных и элементов данных:

Бит — это наименьшая единица данных, которую компьютер может хранить или обрабатывать. Бит представляет собой логическое состояние с одним из двух возможных состояний, то есть «0» или «1», а элемент данных — это базовая единица, имеющая цель и значение. Размер элемента данных зависит от типа данных, которые он хранит, и типа используемой системы. Элемент данных может быть любого размера, и это не обязательно 1 бит, он может быть представлен несколькими битами, байтами или даже большим количеством в зависимости от типа данных и объема информации, которую он должен хранить. слова — это другое название элементов данных.

Элемент данных или слово: это фиксированное количество битов, оно отличается от компьютера к компьютеру, но одинаково для каждого устройства. Вычислительная память хранит информацию в виде слов.

Классификация структуры данных:

  • Линейная структура данных: единица хранения данных, в которой элементы данных хранятся последовательно или в виде прямой линии, причем каждый элемент связан с предыдущим и последующим соседними элементами.
  1. Статическая структура данных. Объем памяти для статической структуры данных фиксирован и к ней проще получить доступ. Примером такой структуры данных является массив.
  2. Динамическая структура данных: размер памяти динамической структуры данных изменяется динамически (он может меняться во время работы программы, что считается эффективным, учитывая сложность памяти (и пространства) кода). Примеры этой структуры данных — очередь, стек и т. д.
  • Нелинейная структура данных: единица хранения данных, в которой элементы хранятся нелинейно или непоследовательно. Мы не можем исследовать каждый элемент нелинейной структуры данных за одну операцию поиска. Примерами нелинейных структур данных являются деревья и графики.

Предупреждение. Не беспокойтесь о коде. Я собираюсь объяснить каждый D.S. в следующих статьях.

……Некоторые из часто используемых структур данных…

Множество

Набор элементов похожих данных, расположенных линейно в памяти фиксированного размера (статическая структура данных), называется массивом. Благодаря своим статическим и линейным свойствам массив защищен от нехватки или переполнения памяти, а также возможен произвольный доступ. Планирование ЦП и справочные таблицы являются примерами использования массива.

# Create an array of integers
my_array = [1, 2, 3, 4, 5]

print(my_array)

Связанный список

Элементы данных связаны с адресом следующих элементов данных в структуре, называемой Node. Коллекция Node называется Linked List. Последний узел указывает на None, поэтому его можно определить как конец связанного списка. Размер связанного списка можно изменить, но изменив адрес последнего узла. Связанный список используется в музыкальных проигрывателях для воспроизведения песен, просмотра изображений на устройствах и манипулирования полиномами.

# Node class for the linked list
class Node:
    def __init__(self, value):
        self.value = value
        self.next = None

# LinkedList class
class LinkedList:
    def __init__(self):
        self.head = None

    # Method to add a new node to the linked list
    def add(self, value):
        new_node = Node(value)
        new_node.next = self.head
        self.head = new_node


    # Method to print the values of the nodes in the linked list
    def print_list(self):
        current = self.head
        while current:
            print(current.value)
            current = current.next

# Create a new linked list
my_list = LinkedList()

# Add some values to the linked list
my_list.add(1)
my_list.add(2)
my_list.add(3)

# Print the values of the nodes in the linked list
my_list.print_list()
# Output: 3, 2, 1

Куча

Стек — это линейная и динамическая структура данных, в которой операция может выполняться в порядке LIFOпоследний в первомпорядке. Стек используется для хранения вызовов функций в рекурсивных функциях, а также их результатов. вы называете историю даже своей историей браузера (теперь вы знаете) в памяти стека.

class Stack:
    def __init__(self):
        self.items = []
        
    def push(self, item):
        self.items.append(item)
        
    def pop(self):
        if not self.is_empty():
            return self.items.pop()
        
    def peek(self):
        if not self.is_empty():
            return self.items[-1]
       
        
# Initialize an empty stack
stack = Stack()

# Add items to the stack
stack.push(1)
stack.push(2)
stack.push(3)



# Remove items from the stack
stack.pop()
stack.pop()



# Print the remaining item in the stack
print(stack.peek()) # Output: 1
        
    

Очередь

Очередь представляет собой линейную и динамическую структуру данных, в которой операции могут выполняться в порядке FIFOпервым пришел — первым обслужен. Очередь используется при планировании заданий, а запросы на сервере находятся в очереди на ответ.

class Queue:
    def __init__(self):
        self.items = []
        
    def enqueue(self, item):
        self.items.append(item)
        
    def dequeue(self):
        if not self.is_empty():
            return self.items.pop(0)
        
    def peek(self):
        if not self.is_empty():
            return self.items[0]
        
    def is_empty(self):
        return len(self.items) == 0

Дерево

Дерево представляет собой нелинейную иерархическую структуру данных, состоящую из узлов, содержащих данные, и дочерних узлов. Самый верхний узел называется корневым узлом, а нижние — листовыми узлами. Используется в сортировке, автозаполнении и в проводнике для представления файлов и папок.

# A Python class that represents
# an individual node in a Binary Tree
 
class Node:
    def __init__(self, key):
        self.left = None
        self.right = None
        self.val = key

Графики

График — это нелинейная структура данных, состоящая из вершин (также известных как узлы) и ребер. Ребра — это линия или путь, соединяющий две вершины. Они обычно используются для представления отношений между объектами.

class AdjNode:
    def __init__(self, data):
        self.vertex = data
        self.next = None
 

class Graph:
    def __init__(self, vertices):
        self.V = vertices
        self.graph = [None] * self.V
 
    # Function to add an edge in an undirected graph
    def add_edge(self, src, dest):
        # Adding the node to the source node
        node = AdjNode(dest)
        node.next = self.graph[src]
        self.graph[src] = node
 
        # Adding the source node to the destination as
        # it is the undirected graph
        node = AdjNode(src)
        node.next = self.graph[dest]
        self.graph[dest] = node

Я знаю, что это всего лишь краткий обзор структур данных, и я надеюсь написать подробную статью о каждой структуре данных, поэтому обязательно следуйте ей. Это все для этой статьи. Я надеюсь, что это поможет вам получить некоторое представление о DSA.

Если вы нашли эту статью полезной, проявите свою любовь, несколько раз нажав кнопку хлопка. 🙌