12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- /*Функция сортирующая массив элементов A :
- Sort(A, p, r)
- 1 if p < r
- 2 then q : = round_half_down((p + r) / 2)
- 3 Sort(A, p, q)
- 4 Sort(A, q + 1, r)
- 5 Merge(A, p, q, r)
- Пример массива :
- A = (5, 2, 4, 6, 1, 3, 2, 6)
- Примера запуска :
- Sort(A, 1, length[A])
- Необходимо :
- Разработать алгоритм функции Merge(A, p, q, r) на любом удобном вам языке,
- с использованием дополнительной памяти или без нее, как вам будет быстрее
- или удобнее в реализации.*/
- #include "Sort.h"
- #include <iostream>
- /*
- Реализован вариаднт Merge для сортировки по возрастанию, логика Merge, разработана с учетом
- приведенного примера запуска: Sort(A, 1, length[A]) - в данном примере, как мне показалось,
- приведен запрос на сортировку массива от первого элемента до последнего, поэтому
- в Merge сделаны дополнительные корректировки входных значений в связи с тем, что нумерация в массиве начинается с 0.
- Все вышеперечисленное легко и быстро корректируется, и
- является следствием невозможности задать уточняющие вопросы.
- Функция реализована в шаблонном варианте, принимает массив стандартной библиотеки и может быть использована
- для массивов с любыми значениями, для которых существует возможность сравнения и копирования.
- */
- int main()
- {
- std::array<int, 8> arr{ 5, 2, 4, 6, 1, 3, 2, 6 };//реализация создания массива из примера
-
- Sort(arr, 1, arr.size());
-
- for (auto& x : arr) {
- std::cout << x << " ";
- }
- std::cout << std::endl;
- return 0;
- }
|