Реализация структур данных и алгоритмов на Swift
Автор: 付晨, дата создания: 2017/9/18.
Чтобы лучше повторить структуры данных и алгоритмы, я переработал основные структуры данных и алгоритмы с помощью Swift.
Большая часть кода была протестирована, но не может быть полностью гарантирована правильность. Надеюсь, что эксперты смогут помочь мне исправить ошибки.
Здесь представлены только самые основные структуры данных и алгоритмы. Существует ещё много нереализованных частей, которые я буду продолжать улучшать и дополнять в процессе дальнейшего обучения.
Содержание
-
Линейные таблицы List
- Последовательное хранение SequentialList
- Получение
- Вставка
- Удаление
- Однонаправленное связное хранение OneDirectionLinkedList
- Головная вставка
- Хвостовая вставка
- Очистка связного списка
- Получение узла
- Вставка
- Удаление
- Двунаправленное связное хранилище DoubleLinkedList
- Получение
- Вставка
- Удаление
-
Стек Stack
- Последовательное хранение SequentialStack
- Совместное использование двух стеков SequentialDoubleStack
- Связное хранение LinkStack
- Числа Фибоначчи
-
Очередь Queue
- Циклическая очередь, последовательное хранение SequentialQueue
- Получить длину очереди
- Поставить в очередь
- Извлечь из очереди
- Связное хранение LinkQueue
- Поставить в очередь
- Извлечь из очереди
-
Строка String
- Алгоритм сопоставления строк StringMatch
- Метод грубой силы
- Алгоритм сопоставления KMP
-
Дерево Tree
- Представление с двумя родителями ParentTree
- Представление с детьми ChildTree
- Представление с братьями ChildBrotherTree
- Двоичное дерево BinaryTreeNode
- Создать двоичное дерево
- Обход (рекурсия)
- Предварительный обход
- Обход в середине
- Последующий обход
- Обход (итерация)
- Предварительный обход
- Обход в середине
- Поуровневый обход
- Ориентированное двоичное дерево
- Посредством обхода в середине ориентируется двоичное дерево
-
Граф Graph
- Смежная матрица AdjacencyMatrix
- Список смежности AdjacencyList
- Создание
- Поиск граничных узлов
- Добавление узлов
- Обход
- Глубокий приоритет
- Широкий приоритет
- Минимальное остовное дерево
- Алгоритм Прима
- Алгоритм Краскала
- Кратчайший путь
- Алгоритм Дейкстры
- Алгоритм Флойда
- Топологическая сортировка не проверена или содержит ошибки
- Критический путь
-
Поиск Search
- Линейный поиск SequentialSearch
- Линейный поиск
- Оптимизация линейного поиска
- Поиск упорядоченной таблицы OrderlyTableSearch
- Бинарный поиск
- Интерполяционный поиск
- Фибоначчи-поиск
- Двоичное сортировочное дерево BinarySortTreeNode
- Сбалансированное бинарное дерево BalancedBinaryTree
- Добавить проблема при обработке двойного вращения, требует решения
- Левое вращение
- Правое вращение
- Левый баланс
- Правильный баланс
- Хеш-таблица HashTable
- Сортировка Sort
- Пузырьковая сортировка BubbleSort
- Пузырьковая сортировка начального уровня
- Улучшенная пузырьковая сортировка
- Оптимизированная пузырьковая сортировка
- Простая сортировка выбором SimpleSelectionSort
- Прямая сортировка вставками StraighInsertionSort
- Сортировка Шелла ShellSort
- Пирамидальная сортировка HeapSort
- Объединение сортировки MergeSort
- Быстрая сортировка QuickSort
Ссылки
- «Структура данных» (версия на языке C++), автор: 邓俊辉, издательство: Издательство Университета Цинхуа
- «Большое введение в структуру данных», автор: 程杰, издательство: Университет Цинхуа
- Блог 青玉伏案
Опубликовать ( 0 )