Main.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /*Функция сортирующая массив элементов A :
  2. Sort(A, p, r)
  3. 1 if p < r
  4. 2 then q : = round_half_down((p + r) / 2)
  5. 3 Sort(A, p, q)
  6. 4 Sort(A, q + 1, r)
  7. 5 Merge(A, p, q, r)
  8. Пример массива :
  9. A = (5, 2, 4, 6, 1, 3, 2, 6)
  10. Примера запуска :
  11. Sort(A, 1, length[A])
  12. Необходимо :
  13. Разработать алгоритм функции Merge(A, p, q, r) на любом удобном вам языке,
  14. с использованием дополнительной памяти или без нее, как вам будет быстрее
  15. или удобнее в реализации.*/
  16. #include "Sort.h"
  17. #include <iostream>
  18. /*
  19. Реализован вариаднт Merge для сортировки по возрастанию, логика Merge, разработана с учетом
  20. приведенного примера запуска: Sort(A, 1, length[A]) - в данном примере, как мне показалось,
  21. приведен запрос на сортировку массива от первого элемента до последнего, поэтому
  22. в Merge сделаны дополнительные корректировки входных значений в связи с тем, что нумерация в массиве начинается с 0.
  23. Все вышеперечисленное легко и быстро корректируется, и
  24. является следствием невозможности задать уточняющие вопросы.
  25. Функция реализована в шаблонном варианте, принимает массив стандартной библиотеки и может быть использована
  26. для массивов с любыми значениями, для которых существует возможность сравнения и копирования.
  27. */
  28. int main()
  29. {
  30. std::array<int, 8> arr{ 5, 2, 4, 6, 1, 3, 2, 6 };//реализация создания массива из примера
  31. Sort(arr, 1, arr.size());
  32. for (auto& x : arr) {
  33. std::cout << x << " ";
  34. }
  35. std::cout << std::endl;
  36. return 0;
  37. }