Мне нужно реализовать саморазделенную структуру данных со случайным доступом. Есть идеи?Сортированная структура данных со случайным доступом
ответ
Самостоятельная сортировка немного противоречива. Прежде всего
Какая структура данных?
Есть много различных структур данных там, такие как:
- Связанный список
- Двусвязные список
- бинарное дерево
- Hash набор/карта
- Stack
- Куча
И многие другие, и каждый из них ведет себя иначе, чем другие, и, конечно же, имеет свои преимущества.
Теперь, не все из них могут или должны быть саморазделениями, такими как Стек, было бы странно, если бы это было саморазделение.
Однако связанный список и двоичное дерево могут быть отсортированы самостоятельно, и для этого вы можете сортировать его по-разному и в разное время.
Для Linked Lists
Я бы preffere Insertion sort для этого, вы можете прочитать различные хорошие статьи об этом на обеих вики и других местах. Мне нравится вставляемая ссылка. Посмотрите на это и попытайтесь понять концепцию.
Если вы хотите отсортировать после его вставки, т.е. в случайные моменты времени, а затем вы можете просто реализовать сортировку algororithm отличается от вставки рода, может быть, bubblesort или, может быть, quicksort, я бы избежать BubbleSort, хотя, это намного медленнее! Но легче задушить разум вокруг.
Random Access
Random всегда что-то вот время обсуждается вокруг так есть читать о том, как выполнить хорошую рандомизации и вы будете на своем пути, если у вас есть связанный список и есть «getAt» -метод, вы можете просто рандомизировать индекс между 0 и n и получить элемент в этом индексе.
Поддержание сортированного списка и доступа к нему произвольно требует не менее O (lgN)/операции. Итак, ищите AVL, red-black trees, treaps или любую другую подобную структуру данных и обогащайте их для поддержки случайной индексации. Я предлагаю treaps, так как они проще всего понять/реализовать.
Одним из способов обогащения дерева treap является сохранение в каждом узле количества узлов в поддереве, внедренных в этот узел. Вам нужно будет обновить счет при изменении дерева (например: вставка/удаление).
Я не слишком вовлечен в последнее время с реализацией структур данных. Вероятно, этот ответ не является ответом вообще ... вы должны увидеть «Введение в алгоритмы», написанные Томасом Корменом.В этой книге много «рецептов» с объяснениями о внутренней работе многих структур данных. С другой стороны, вы должны учитывать, сколько времени вы хотите потратить на составление алгоритма, размер ввода и если есть реальная необходимость специального вида структуры данных.
Само упорядоченная структура данных может быть двоичными деревьями поиска. Если вам нужна собственная сортированная структура данных и самобалансированная. Дерево AVL - это путь. Время поиска будет O (lgn) для случайного доступа.
- 1. Быстрая, упорядоченная структура данных со случайным доступом?
- 2. Сортированная итеративная эффективная сортированная структура в Java
- 3. Эффективная сортированная структура данных в JavaScript
- 4. Структура с кучей данных с быстрым случайным доступом?
- 5. Мне нужна структура данных, как стек, но со случайным доступом, но что мне следует реализовать?
- 6. Структура данных Python для коллекции объектов со случайным доступом на основе атрибута
- 7. Работа с огромным массивом со случайным доступом к его элементам
- 8. класс сжатого вектора/массива со случайным доступом к данным
- 9. структура данных со строкой только
- 10. Сортированная структура данных, которая эффективна и может хранить исходное сообщение с соответствующими отметками времени
- 11. случайное управление доступом-позволение-происхождение случайным образом
- 12. список со случайным событием
- 13. Равномерное распределение со случайным
- 14. Gridview со случайным изображением
- 15. и оператор со случайным
- 16. Проблема со случайным методом
- 17. завиток со случайным прокси
- 18. QSort со случайным разделом
- 19. Ошибка со случайным числом
- 20. список со случайным значением
- 21. Структура данных, такая как Queue с доступом к последнему элементу
- 22. Структура данных для связанного списка с произвольным доступом
- 23. Очередь FIFO со случайным удалением
- 24. Структура управления доступом пользователей на сайте
- 25. есть структура данных со следующими свойствами:
- 26. Структура таблицы для данных со многими NULL
- 27. Какая структура данных C# поддерживает следующее?
- 28. функция тестирования со случайным выходом
- 29. Javascript setinterval со случайным временем
- 30. Cakephp pagination со случайным порядком?
Сначала попробуйте поисковую систему. Голосование закрывается из-за отсутствия энтузиазма в отношении части OP, чтобы делать базовые домашние задания. – dirkgently
Не спешите. Это не так просто, как смотреть сначала. – alex
Вот один из них: http://stackoverflow.com/questions/890357/efficient-data-structure-for-fast-random-access-search-insertion-and-deletion – dirkgently