Skip to content

[FIXED] Карпич Иван. Технология SEQ. Поразрядная сортировка для целых чисел с четно-нечетным слиянием Бэтчера. Вариант 18#235

Merged
allnes merged 1 commit intolearning-process:masterfrom
hargussss:karpich_i_bitwise_batcher
Mar 7, 2026

Conversation

@hargussss
Copy link
Contributor

@hargussss hargussss commented Mar 3, 2026

Описание

  • Задача: Поразрядная сортировка для целых чисел с четно-нечетным слиянием Бэтчера
  • Вариант: 18
  • Технология: SEQ

Описание алгоритма

Алгоритм выполняет сортировку массива целых чисел с помощью поразрядной сортировки (radix sort) и последующего четно-нечетного слияния Бэтчера.

Последовательный вариант работает так:

  1. По входному n генерируется массив из n целых чисел (включая отрицательные).
  2. Размер дополняется до ближайшей степени двойки (для корректной работы сети Бэтчера).
  3. Массив делится на две половины, каждая половина сортируется radix sort (отрицательные и неотрицательные обрабатываются отдельно).
  4. Отсортированные половины объединяются и сливаются odd-even merge сетью Бэтчера (набор компараторов compare-and-swap).
  5. Массив обрезается до исходного размера и проверяется на упорядоченность.

Сложность

  • radix sort — O(n) при фиксированном числе проходов по разрядам
  • слияние Бэтчера — порядка O(n log^2 n)
  • память — O(n)

Чеклист

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

@hargussss hargussss requested a review from allnes as a code owner March 3, 2026 13:36
@hargussss hargussss changed the title FIXED: Карпич Иван. Технология SEQ. Поразрядная сортировка для целых чисел с четно-нечетным слиянием Бэтчера. Вариант 18 [FIXED] Карпич Иван. Технология SEQ. Поразрядная сортировка для целых чисел с четно-нечетным слиянием Бэтчера. Вариант 18 Mar 3, 2026
@hargussss
Copy link
Contributor Author

@allnes здравствуйте, работа уже была смержена. фикс заключается в изменении названия директории с задачей, которая изначально была неверно названа (как оказалось после онлайн встречи от 02.03)

Ramzan8-88 pushed a commit to Ramzan8-88/ppc-2026-threads that referenced this pull request Mar 4, 2026
…ых. Вариант 6 (learning-process#235)

## Описание

- **Задача**: Линейная топология передачи данных
- **Вариант**: 6
- **Технология**: MPI, SEQ
- **Описание** вашей реализации и отчёта.  
В рамках данной работы реализована задача передачи данных в линейной
виртуальной топологии.
Параллельная версия выполнена с использованием библиотеки MPI без
применения специализированных
  функций создания топологий (`MPI_Cart_Create`, `MPI_Graph_Create`).

Процессы логически организованы в линейную структуру с рангами от `0` до
`P-1`.
Передача значения осуществляется последовательно от процесса-источника
(`source`)
к процессу-назначению (`target`) через промежуточные процессы с
использованием
блокирующих операций `MPI_Send` и `MPI_Recv`. Направление передачи
определяется
  автоматически в зависимости от расположения `source` и `target`.

После получения значения целевым процессом результат распространяется на
все процессы
с помощью `MPI_Bcast`. Также реализована последовательная версия (SEQ),
используемая
в качестве эталона корректности и базы для сравнения производительности.

Для обеспечения корректного и стабильного измерения времени выполнения в
реализации
используется вычислительная нагрузка (`Work(int n)`), позволяющая
избежать влияния
слишком малого объёма полезных вычислений на результаты
performance-тестов.
В отчёте приведено описание алгоритма, схемы распараллеливания, деталей
реализации,
а также анализ корректности и производительности при различном числе
процессов.

---

## Чек-лист

- [x] **Статус CI**: Все CI-задачи (сборка, тесты, генерация отчёта)
успешно проходят на моей ветке в моем форке
- [x] **Директория и именование задачи**: Я создал директорию с именем
`trofimov_n_linear_topology`
- [x] **Полное описание задачи**: Я предоставил полное описание задачи в
теле pull request
- [x] **clang-format**: Мои изменения успешно проходят `clang-format`
локально в моем форке (нет ошибок форматирования)
- [x] **clang-tidy**: Мои изменения успешно проходят `clang-tidy`
локально в моем форке (нет предупреждений/ошибок)
- [x] **Функциональные тесты**: Все функциональные тесты успешно
проходят локально на моей машине
- [x] **Тесты производительности**: Все тесты производительности успешно
проходят локально на моей машине
- [x] **Ветка**: Я работаю в ветке `trofimov_n_linear_topology`, а не в
`master`
- [x] **Правдивое содержание**: Я подтверждаю, что все сведения,
указанные в этом pull request, являются точными и достоверными
@allnes allnes merged commit 6fefaf7 into learning-process:master Mar 7, 2026
34 checks passed
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.

2 participants