Skip to content

Дорофеев Иван. Технология SEQ. Поразрядная сортировка для вещественных чисел (тип double) с четно-нечетным слиянием Бэтчера. Вариант 20.#61

Open
4elodoy-Molovek wants to merge 7 commits intolearning-process:masterfrom
4elodoy-Molovek:dorofeev_i_bitwise_sort_double_eo_batcher_merge_seq

Conversation

@4elodoy-Molovek
Copy link

Дорофеев Иван. Технология SEQ. Поразрядная сортировка для вещественных чисел (тип double) с четно-нечетным слиянием Бэтчера. Вариант 20

Описание

  • Задача: Поразрядная сортировка для вещественных чисел (тип double) с четно-нечетным слиянием Бэтчера.

  • Вариант: 20

  • Технология: SEQ

  • Описание вашей реализации и отчёта:
    Реализована последовательная (SEQ) версия поразрядной сортировки (Radix Sort LSD) для чисел с плавающей запятой двойной точности.

    Основные детали решения:

    1. Подготовка данных: Для корректной поразрядной сортировки чисел типа double применяется их побитовое преобразование в uint64_t (стандарт IEEE 754). Для сохранения правильного порядка сортировки (отрицательные числа левее положительных) биты инвертируются по специальной маске. По завершении сортировки происходит обратное преобразование.
    2. Логика работы (эмуляция разделения): Массив добивается фиктивными максимальными значениями до ближайшей степени двойки (требование сети Бэтчера). Затем массив условно делится на две половины, каждая из которых сортируется поразрядно независимо друг от друга.
    3. Слияние: Две отсортированные половины сливаются в единый массив с помощью итеративной реализации четно-нечетного слияния Бэтчера (Odd-Even Merge). Итеративный подход выбран для снижения когнитивной сложности и исключения риска переполнения стека вызовов, характерного для рекурсии. После слияния фиктивные элементы отсекаются.

Чек-лист

  • Статус CI: Все CI-задачи (сборка, тесты, генерация отчёта) успешно проходят на моей ветке в моем форке
  • Директория и именование задачи: Я создал директорию с именем <фамилия>_<первая_буква_имени>_<короткое_название_задачи>
  • Полное описание задачи: Я предоставил полное описание задачи в теле pull request
  • clang-format: Мои изменения успешно проходят clang-format локально в моем форке (нет ошибок форматирования)
  • clang-tidy: Мои изменения успешно проходят clang-tidy локально в моем форке (нет предупреждений/ошибок)
  • Функциональные тесты: Все функциональные тесты успешно проходят локально на моей машине
  • Тесты производительности: Все тесты производительности успешно проходят локально на моей машине
  • Ветка: Я работаю в ветке, названной точно так же, как директория моей задачи
    (например, nesterov_a_vector_sum), а не в master
  • Правдивое содержание: Я подтверждаю, что все сведения, указанные в этом pull request, являются точными и достоверными

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant