Способы представления данных
Что такое структура данных. Массивы - одна из простых, часто применяемых структур данных. Операции с ними. Что представляет собой связанный список. Стек и очередь как линейные структуры данных. Сущность графа и дерева. Представление данных в хэш-таблице.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 01.06.2022 |
Размер файла | 437,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
- Что такое структура данных?
- Массивы
- Связанный список (Linked List)
- Стек
- Очередь
- Граф
- Дерево
- Хэш-таблица
- Что такое структура данных?
- Независимо от профессии, ежедневная работа связана с данными. Шеф-повар, инженер-программист или даже рыбак ?--? все они работают с теми или иными формами данных.
- Структуры данных ?--? это контейнеры, которые хранят данные в определенном формате. Этот специфический формат придает структуре данных определенные качества, которые отличают ее от других структур и делают ее пригодной (или напротив, неподходящей) для тех или иных сценариев использования.
- Рассмотрим некоторые из наиболее важных структур данных, которые помогут создавать эффективные решения.
- Массивы
- Массивы ?--? одна из самых простых и часто применяемых структур данных. Такие структуры данных, как очереди и стеки, основаны на массивах и связанных списках (которые мы рассмотрим чуть позже).
- Каждому элементу в массиве присваивается положительное целое число, которое обозначает положение элемента. Это число называется индексом. В большинстве языков программирования индексы начинаются с нуля. Эта концепция называется нумерацией на основе нуля.
- Существует два типа массивов: одномерные и многомерные. Первые представляют собой простейшие линейные структуры, а вторые ?--? вложенные и включают другие массивы.
- Основные операции с массивами
- · Get ?--? получить элемент массива по заданному индексу.
- · Insert ?--? вставить элемент массива по заданному индексу.
- · Length ?--? получить количество элементов в заданном массиве.
- · Delete ?--? удалить элемент массива по заданному индексу. Может быть выполнено либо путем установки значения undefined, либо путем копирования элементов массива, за исключением удаляемого, в новый массив.
- · Update ?--? обновление значения элемента массива по заданному индексу.
- · Traverse?--? проход цикла через массив для выполнения функций над элементами массива.
- · Search ?--? поиск определенного элемента в заданном массиве с помощью выбранного алгоритма.
- Применение массивов
- · Представляют собой строительные блоки более сложных структур данных, таких как стеки, очереди и т.д.
- · Подходят для хранения несложных связанных данных благодаря простоте использования.
- · Используются для различных алгоритмов сортировки, таких как сортировка вставок, сортировка пузырьком и т.д.
- Одномерный массив
- Многомерный массив
- Связанный список (Linked List)
- Связанный список ?--? это набор элементов, называемых узлами, в линейной последовательной структуре. Узел ?--? простой объект с двумя свойствами. Это переменные для хранения данных и адреса памяти следующего узла в списке. Поэтому узел знает только о том, какие данные он содержит и кто его сосед. Это позволяет создавать связанные списки, в которых каждый узел связан с другим.
- Существует несколько типов связанных списков.
- · Односвязный. Обход элементов может выполняться только в прямом направлении.
- · Двусвязный. Обход элементов может выполняться как в прямом, так и в обратном направлениях. Узлы включают дополнительный указатель, известный как prev, указывающий на предыдущий узел.
- · Круговые связанные. Это связанные списки, в которых предыдущий (prev) указатель “головы” указывает на “хвост”, а следующий указатель “хвоста” указывает на “голову”.
- Основные операции со связанными списками
- · Insertion?--? добавление узла в список. Это может быть сделано на основе требуемого местоположения, такого как голова, хвост или где-то посередине.
- · Delete?--? удаление узла в начале списка или на основе заданного ключа.
- · Display ?--? отображение полного списка.
- · Search ?--? поиск узла в данном связанном списке.
- · Update ?--? обновление значения узла в заданном ключе.
- Применение связанных списков
- · В качестве строительных блоков сложных структур данных, таких как очереди, стеки и некоторые типы графиков.
- · В слайд-шоу изображений, поскольку изображения идут строго друг за другом.
- · В динамических структурах для выделения памяти.
- · В операционных системах для легкого переключения вкладок.
- Стек
- Стек ?--? линейная структура данных, которая создается на основе массивов или связанных списков. Стек следует принципу Last-In-First-Out (LIFO, “первым на вход ?--? последним на выход”), т.е. последний элемент, вошедший в стек, будет первым, кто покинет его. Причина, по которой эта структура называется стеком, в том, что ее можно визуализировать как стопку книг на столе (по-английски stack).
- Основные операции со стеком
- · Push ?--? вставка элемента в верхнюю часть стека.
- · Pop ?--? удаление элемента из верхней части стека с возвращением элемента.
- · Peek ?--? просмотр элемента в верхней части стека.
- · isEmpty ?--? проверка пустоты стека.
- Применение стеков
- · В истории навигации браузера.
- · Для реализации рекурсии.
- · При выделении памяти на основе стека.
- Очередь
- Как и стек, очередь ?--? это еще один тип линейной структуры данных, основанной либо на массивах, либо на связанных списках. Очереди отличаются от стеков тем, что они основаны на принципе First-In-First-Out (FIFO, “первым на вход ?--? первым на выход”), где элемент, который входит в очередь первым, и покинет ее первым.
- Реальная аналогия структуры данных “очереди” ?--? это очередь людей, ожидающих покупки билета в кино.
- Основные операции с очередями
- · Enqueue ?--? вставка элемента в конец очереди.
- · Dequeue ?--? удаление элемента из передней части очереди.
- · Top/Peek ?--? возвращает элемент из передней части очереди без удаления.
- · isEmpty ?--? проверка содержимого очереди.
- Применение очередей
- · Обслуживание нескольких запросов на одном общем ресурсе.
- · Управление потоками в многопоточных средах.
- · Балансировка нагрузки.
- Граф
- Граф ?--? это структура данных, представляющая собой взаимосвязь узлов, которые также называются вершинами. Пара (x,y) называется ребром. Это указывает на то, что вершина x соединена с вершиной y. Ребро может указывать на вес/стоимость, то есть стоимость прохождения по пути между двумя вершинами.
- Ключевые термины
- · Размер ?--? количество ребер в графике.
- · Порядок ?--? количество вершин в графе.
- · Смежность ?--? случай, когда два узла соединены одним и тем же ребром.
- · Петля ?--? вершина, соединенная ребром сама с собой.
- · Изолированная вершина ?--? вершина, которая не связана с другими вершинами.
- Графы делятся на два типа. Они различаются главным образом по направлениям пути между двумя вершинами.
- · Ориентированные графы: все ребра имеют направления, указывающие начальную и конечную точки (вершины).
- · Неориентированные графы: ребра не имеют направлений, которые позволяют обходам происходить с любого направления.
- Распространенные алгоритмы обхода графов
- · Поиск в ширину (BFS) ?--? метод поиска кратчайшего пути в графе, основанный на вершинах.
- · Поиск в глубину (DFS) ?--? метод, основанный на ребрах.
- Основные операции с графами
- · Addvertex: добавить вершину в граф.
- · Addedge: добавить ребро между двумя вершинами.
- · Display: отобразить вершину.
- · Total costoftraversal: найти общую стоимость пути обхода.
- Применение графов
- · Для представления потоковых вычислений.
- · При распределении ресурсов операционной системой.
- · Реализация алгоритмов поиска друзей в Facebook.
- · Расчет кратчайшего пути между двумя локациями (Google Maps).
- Ориентированный граф со стоимостью
- Дерево
- Дерево ?--? это иерархическая структура данных, состоящая из вершин (узлов) и ребер, которые их соединяют. Деревья часто используются в системах искусственного интеллекта и сложных алгоритмах, поскольку обеспечивают эффективный подход к решению проблем. Дерево ?--? это особый тип графа, который не содержит циклов. Некоторые утверждают, что деревья полностью отличаются от графов, но эти аргументы субъективны.
- массивы данные стек очередь граф хэш таблица
- Существует несколько типов деревьев.
- · N-арное дерево.
- · Сбалансированное дерево.
- · Бинарное дерево.
- · Бинарное дерево поиска (BST).
- · Дерево AVL.
- · Красно-черное дерево.
- · 2-3-дерево.
- BST ?--? самые распространенные типы деревьев.
- Простое дерево
- Основные операции с BST
- · Insert ?--? вставка элемента в дерево.
- · Search ?--? поиск элемента в дереве.
- · PreorderTraversal ?--? обход дерева прямым способом.
- · InorderTraversal ?--? обход дерева центрированным способом.
- · PostorderTraversal ?--? обход дерева обратным способом.
- Применение деревьев
- · Представление организации.
- · Представление компьютерной файловой системы.
- · Представление химической формулы.
- · В деревьях принятия решений.
- · Внутри JVM (Java Virtual Machine) для хранения объектов Java.
- Хэш-таблица
- Хэш-таблица хранит данные в парах ключ-значение. Это означает, что каждый ключ в хэш-таблице имеет некое значение, связанное с ним. Такая простая компоновка обеспечивает эффективность хэш-таблиц, независимо от их размера, при работе с данными.
- Хэш-таблицы похожи на обычное хранилище данных с парой ключ-значение, однако их отличает способ генерации ключей. Они создаются с помощью специального процесса, называемого хэшированием.
- Хеширование (хэш-функция)
- Хэширование ?--? это процесс, который с помощью хэш-функции преобразует ключ для получения хэшированного ключа. Эта хэш-функция определяет индекс таблицы или структуры, в которых должно храниться значение.
- h(k) = k % m
- · h ?--? хэш-функция.
- · k ?--? ключ, из которого должно быть определено хэш-значение.
- · m ?--? размер хэш-таблицы.
- Например, рассмотрим использование хэш-функции k%17. Если исходный ключ равен 20, то хэшированный будет 20%17=3. Значение будет храниться в хэш-таблице под индексом 3.
- Хэш-функция для ключей
- Зачем нужен хэш?
- Некоторые задаются вопросом, зачем проходить через дополнительный процесс хэширования, когда можно просто сопоставить значения непосредственно с ключом. Хотя прямое сопоставление несложно, оно может оказаться неэффективным при работе с большим набором данных. С помощью хеширования можно достичь почти постоянного времени O(1).
- Коллизии
- Поскольку для преобразования ключей используется общая хэш-функция, существует вероятность коллизий. Рассмотрим приведенный ниже пример с учетом хэш-функции k%17.
- · Когда k = 18, h(18) = 18%17 = 1.
- · При k = 20, h(20) = 20%17 = 3.
- · При k = 35, h(35) = 35%17 = 1.
- Когда ключи равняются 18 и 35, происходит коллизия, поскольку они направляются к индексу 1.
- Коллизии можно разрешить с помощью таких стратегий, как раздельная цепочка и открытая адресация.
- Основные операции с хэш-таблицами
- · Search ?--? поиск элемента в хэш-таблице.
- · Insert ?--? вставка элемента в хэш-таблицу.
- · Delete ?--? удаление элемента из хэш-таблицы.
- Применение хэш -таблиц
- · В индексации баз данных.
- · При проверке орфографии.
- · При реализации заданной структуры данных.
- · В кэше.
- Размещено на Allbest.ru
Подобные документы
Проблемы с организацией данных. Определение и классификация динамических структур данных. Линейные односвязные, двухсвязные, кольцевые списки. Очередь, стеки. Описание основных типов данных и функции для работы с ними. Листинг программы, пример ее работы.
контрольная работа [290,6 K], добавлен 17.07.2012Определение понятия структур данных. Рассмотрение информации и ее представления в памяти. Особенности непозиционных и позиционных систем счисления. Классификация структур данных, операции над ними. Структурность данных и технология программирования.
презентация [359,3 K], добавлен 20.05.2015Способы ограждения пользователей от деталей фактического устройства данных. Список описателей переменных, указателей или массивов. Статические или динамические структуры данных. Доступ к различным элементам данных. Добавление и удаление элементов.
презентация [57,8 K], добавлен 14.10.2013Средства создания динамических структур данных. Формат описания ссылочного типа. Структура памяти во время выполнения программы. Линейные списки, стек, очередь. Организация списков в динамической памяти. Пример создания списка в обратном порядке.
лабораторная работа [788,2 K], добавлен 14.06.2009Общая характеристика данных. Список как простейшая линейная структура данных. Табличные структуры данных (матрицы). Принцип действия метода дихотомии. Основные режимы обработки данных. Расчет отчислений в фонды по каждому сотруднику с помощью MS Excel.
курсовая работа [1,6 M], добавлен 21.10.2009Понятия банка и базы данных, ее компоненты. Многоуровневые модели предметной области, их представление в базе данных. Идентификация объектов и записей. Способы обращения к записям или отдельным элементам данных, их поиск. Определение структуры данных.
контрольная работа [39,6 K], добавлен 10.04.2010Что такое базы данных, визуализация информации базы. Структура и свойства простейшей базы данных. Характеристика определений, типов данных, безопасность, специфика формирования баз данных. Подходы к проектированию технического задания. Работа с таблицами.
презентация [4,3 M], добавлен 12.11.2010Структура простейшей базы данных и свойства полей. Характеристика типов данных. Описание процесса создания базы данных, таблиц и связей между ними, простых и составных форм, запросов в Microsoft Access. Пример составления подчинённых отчетов и макросов.
курсовая работа [2,9 M], добавлен 14.11.2016Описание процедуры выбора структуры хранения данных. Программная реализация одномерного неоднородного массива. Представление бинарного дерева в виде динамической структуры данных. Изучение способов поиска в упорядоченном дереве. Содержание базы данных.
практическая работа [850,0 K], добавлен 16.04.2015Представление (построение, создание) списка данных в виде линейного однонаправленного списка. Формирование массива данных. Вывод данных на экран. Алгоритм удаления, перемещения данных. Сортировка методом вставки. Алгоритм загрузки данных из файла.
курсовая работа [2,1 M], добавлен 16.05.2015