Различия между версиями 1 и 2
Версия 1 от 2012-02-01 17:26:03
Размер: 4004
Редактор: FrBrGeorge
Комментарий:
Версия 2 от 2012-02-05 19:00:42
Размер: 4004
Редактор: Ray
Комментарий: орф
Удаления помечены так. Добавления помечены так.
Строка 14: Строка 14:
  1. «Сортировка магнитных лент». Дан файл («магнитная лента»), содержащий строку, одновременно не умещающиеся в памяти. Требуется отсортировать этот файл построчно (записать отсортированные данные обратно на эту ленту). Для сортировки разрешается открывать небольшое число дополнительных файлов произвольного размера (использовать небольшое число дополнительных «лент»). /* Вот алгоритм с четырьмя лентами. Назовём ''отрезком'' упорядоченную последовательность строк на ленте. При записи отрезка на ленту применяется специальный ''маркер''-разделитель. Сначала разобьем исходную ленту на отрезки и перепишем их на первую вспомогательную ленту. Затем перепишем первые два отрезка на две временные ленты и сольём их в один, добавив на вторую вспомогательную ленту. Повторим процесс, пока все отрезки не кончатся (если остался один, просто допишем его). Поменяем вспомогательные ленты местами. Повторим процесс слияния отрезков до тех пор, пока на ленте-приёмнике не окажется ''ровно один'' отрезок. Это и будут отсортированные данные. Перепишем содержимое отрезка на исходную ленту. */   1. «Сортировка магнитных лент». Дан файл («магнитная лента»), содержащий строки, одновременно не умещающиеся в памяти. Требуется отсортировать этот файл построчно (записать отсортированные данные обратно на эту ленту). Для сортировки разрешается открывать небольшое число дополнительных файлов произвольного размера (использовать небольшое число дополнительных «лент»). /* Вот алгоритм с четырьмя лентами. Назовём ''отрезком'' упорядоченную последовательность строк на ленте. При записи отрезка на ленту применяется специальный ''маркер''-разделитель. Сначала разобьем исходную ленту на отрезки и перепишем их на первую вспомогательную ленту. Затем перепишем первые два отрезка на две временные ленты и сольём их в один, добавив на вторую вспомогательную ленту. Повторим процесс, пока все отрезки не кончатся (если остался один, просто допишем его). Поменяем вспомогательные ленты местами. Повторим процесс слияния отрезков до тех пор, пока на ленте-приёмнике не окажется ''ровно один'' отрезок. Это и будут отсортированные данные. Перепишем содержимое отрезка на исходную ленту. */

Модули `time` и `pickle`, множества

Довольно мелкие темы, попавшиеся под руку при решении домашних заданий.

  • Множества (set(последовательность)). Операции &, |, ^, Использование множеств для хранения уникальных элементов.

  • Модуль time. Функции time.time(), time.strftime(). Запуск и останов вычислений по времени.

  • Модуль pickle. Функции pickle.dump(объект,файл) и pickle.load(файл). Применение pickle для имитации «типизированных файлов» в задачах.

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

  1. {i} Прочитать в учебнике про Pickle и Наборы (множества) в учебнике; про модуль time в документации

  2. «Сортировка магнитных лент». Дан файл («магнитная лента»), содержащий строки, одновременно не умещающиеся в памяти. Требуется отсортировать этот файл построчно (записать отсортированные данные обратно на эту ленту). Для сортировки разрешается открывать небольшое число дополнительных файлов произвольного размера (использовать небольшое число дополнительных «лент»).

    • Предлагается использовать pickle для хранения в одном файле строк и не-строк.

  3. /!\ TODO: что-нибудь про time()

  4. /!\ TODO: что-нибудь простое про pickle

  5. /!\ TODO: что-нибудь простое про множества

Условные обозначения

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

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

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

  • {*} — тема для самостоятельного изучения


CategoryClass CategoryVmsh

LecturesVMSH/2012-02-01 (последним исправлял пользователь FrBrGeorge 2012-02-08 17:26:20)