- Цель: Изучить структуры данных и сортировки
- Алгоритмы(фибоначчи и факториала) рабутую корректно для ограничений заданных Python
- Алгоритмы сортировок все крому busket принимают тип int
- Для Radixsort принимаются неотрицательные числа
- Для Radixsort нужно дополнительно вводить основание системы счисления и возвращает массив в 10 сс
- стек сосздается автоматически и пользователь просто вводит команты без скобок
- написаны просто генераторы тестов. Они не интегрированы в программу
- Написание простых автотестов с помощью pytest
- Изучил несколько алгоратмивом сортировок
- Написал собственную структуру данных(Stack)
- Изучил рекурсивную и динамическую реализацию чисел фибоначи и факториала
- Освоил модуль random для написания генераторов тестов
- Некоторые азы OOП для написания стека
py -m src.main
exit
python -m pytest tests/path -v для подробного вывода тестов
python -m pytest tests/path для обычного запуска тестов
- bublesort - вызывает сортировку пузырьком
- countsort - вызывает сортировку подсчетом
- radixsort - вызывает поразрядную сортировку
- qsort - вызывает быструю сортировку
- bucketsort - вызывает блочную сортировку
- factorial - вызывает итеративную функцию вычисления факториала
- factorialrec - вызывает рекурсивную реализацию вычисления факториала
- fib - вызывает итеративную функцию вычисления числа фибоначчи
- fibrec - вызывает рекурсивную функцию вычисления чисел фибоначчи
- pop - извлекает послений элемент из стека и выводит в консоль
- peek - выводит последний элемент стека
- len - возвращает длину стека
- is_empty - проверяет пуст ли стек
- push - дабавить элемент в конец стека
Стек — это абстрактный тип данных, представляющий собой коллекцию элементов, организованных по принципу LIFO (Last In, First Out) — последним пришел, первым вышел.
- init()- инициализация стека
- push(self, item) - добавления элементка в конец
- empty(self)- проверка на пнстоту
- pop(self) - удаление и возврат последнего эдемента
- peek(self) - возвращает последний элемент без удаления
- len(self) - возвращает количество элементов в списке
- rand_int_array Генерирует массив случайных целых чисел в заданном диапазоне
- nearly_sorted - Генерирует почти отсортированный массив
- many_duplicates - Генерирует массив с большим количеством дубликатов
- reverse_sorted - Генерирует обратно отсортированный массив
- rand_float_array - Генерирует массив случайных вещественных чисел в заданном диапазоне
- Проход по массиву от начала до конца
- Сравнение соседних элементов на каждой итерации
- Обмен элементов при неправильном порядке расположения
- Повторение процесса до полной сортировки массива
- Оптимизация: флаг для досрочного завершения при отсутствии обменов
- Выбор опорного элемента (pivot) из массива
- Разделение массива на три части:
- Элементы меньше опорного
- Элементы равные опорному
- Элементы больше опорного
- Рекурсивная сортировка левой и правой частей
- Объединение отсортированных частей
- Определение диапазона — нахождение минимального и максимального значений
- Создание массива подсчета — инициализация массива для подсчета частот
- Подсчет элементов — заполнение массива частотами встречаемости
- Накопительный подсчет — преобразование частот в позиции
- Построение отсортированного массива — размещение элементов в правильном порядке
- Определение максимального числа — нахождение самого большого числа в массиве
- Вычисление количества разрядов — определение сколько разрядов нужно обработать
- Последовательная обработка разрядов — от младшего к старшему
- Распределение по корзинам — для каждого разряда числа распределяются по "корзинам" соответствующим цифрам
- Сборка массива — числа собираются из корзин в порядке возрастания цифр
- Повторение — процесс повторяется для всех значимых разрядов
- Создаем n пустых корзин
- Для каждого элемента вычисляем индекс корзины и распределяем по карзинам
- Каждую непустую корзину сортируем отдельно
- Объединяем отсортированные корзины в результирующий массив
- Инициализация корня
- Сравнение с правым и левым узлами
- Если наибольший не равен корню то меняем
- Восстанавливаем пирамиду