Тема занятия: структуры данных и поиск

  • {o} — тема по Linux

  • <!> ­— необязательная тема

Домашнее задание

  • {i} — теоретическое задание

  • {*} — новая тема

  1. Почитать про индексные массивы, списки и ассоциативные массивы, хэширование, двоичные деревья поиска и более ветвистые B-деревья, AVL-, красно-черные и декартовы деревья.

  2. Сгенерировать текстовый файл с таблицей вида [уникальное случайное число, случайная строка без пробелов] на N = 10**5 элементов. Использовать эти данные (как набор пар "ключ-значение") в качестве входных для программы, которая тестирует производительность следующих структур данных:
    1. линейный список
    2. хешированная таблица
    3. двоичное дерева (заполняемого с балансировкой и без балансировки)
    4. стандартный словарь (dict)

    Тестирует она их следующим образом. Для каждого шага измеряется общее и среднее время выполнения операции со структурой, например,с помощью функции times() из модуля os.

  3. Загружает все данные в изначально пустую структуру.
  4. Составляет случайную выборку из M = 1000 значений ключей, которые заведомо встречаются в структуре (эту подоперацию можно не измерять). Делает поиск этих элементов, проверяя, что они действительно в ней встречаются.
  5. Составляет случайную выборку из M = 1000 значений ключей, которые заведомо не встречаются в структуре (эту подоперацию можно не измерять). Делает поиск этих элементов, проверяя, что они действительно в ней не встречаются.

  6. Задача №765. Частоты появления элементов

  7. Задача №744. Хеширование


CategoryClass CategoryVmsh