На языке Python написать алгоритм (функцию) определения четности целого числа, который будет аналогичен нижеприведенному по функциональности, но отличен по своей сути. Объяснить плюсы и минусы обеих реализаций.
Пример:
def isEven(value):
return value % 2 == 0
На языке Python написать минимум по 2 класса реализовывающих циклический буфер FIFO. Объяснить плюсы и минусы каждой реализации.
Оценивается:
- Полнота и качество реализации
- Оформление кода
- Наличие сравнения и пояснения по быстродействию
На языке Python предложить алгоритм, который быстрее всего (по процессорным тикам) отсортирует данный ей массив чисел. Массив может быть любого размера со случайным порядком чисел (в том числе и отсортированным). Объяснить, почему вы считаете, что функция соответствует заданным критериям.
mod time: 6.4
& time: 5.0
Вариант с логическим и быстрее в силу работы с самими битами числа, и отсутствием вычисления "дорогой" операции деления. Но такой вариант требует немного больше времени для понимания что происходит читателю
Addition speed:
DequeCircularBuffer time: 23.747684
ListCircularBuffer time: 26.3042843
Buffer size:
DequeCircularBuffer size: 82500760
ListCircularBuffer size: 80000056
Pop speed:
DequeCircularBuffer time: 7.8169389
ListCircularBuffer time: 9.7740865
Циклический буфер в основе которого лежит двунаправленная очередь работает быстрее, чем буфер, в основе которого лежит список, в силу того что в нем используются эффективные операции добавления и удаления 545B в конец и начало коллекции. Также можно заметить что буффер с deque занимает больше памяти, это связано с тем, что он хранит ссылки на каждый узел, что и позволяет эффективно добавлять и удалять элементы в начало и конец.
Быстрее всего с задаными условиями справится Timsort который уже реализован в Python (sorted()), который является гибридом сортировки вставками и слиянием. Худшая и средняя сложность O(n logn), лучшая O(n)