Advertisement
avr39ripe

cppGittAndriySortArrGoodSolutions

Apr 27th, 2021
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.09 KB | None | 0 0
  1. Задание 1. Дан массив чисел размерностью 10 элементов. Написать функцию,
  2. которая сортирует массив по возрастанию или по убыванию, в зависимости от
  3. третьего параметра функции. Если он равен true, сортировка идет по убыванию,
  4. если false, то по возрастанию. Первые 2 параметра функции — это массив и его
  5. размер, третий параметр по умолчанию равен false.
  6.  
  7. #include <iostream>
  8.  
  9. void ArrSort(int arr[], int size, bool sortUp = false)
  10. {
  11.     int UpDownIdx{ 1 };
  12.     if (sortUp == true) { UpDownIdx = -1; }
  13.  
  14.     for (int head{ 0 }; head < size; ++head)
  15.     {
  16.         int sortIdx{ head };
  17.         for (int i{ head + 1 }; i < size; ++i)
  18.         {
  19.             if ((arr[i] * UpDownIdx) < (arr[sortIdx] * UpDownIdx)) { sortIdx = i; }
  20.         }
  21.         if (head != sortIdx)
  22.         {
  23.             int tmp{ arr[head] };
  24.             arr[head] = arr[sortIdx];
  25.             arr[sortIdx] = tmp;
  26.         }
  27.     }
  28. }
  29.  
  30. void PrintArr(const int arr[], int size)
  31. {
  32.     for (int i{ 0 }; i < size; ++i) { std::cout << arr[i] << ' '; } std::cout << '\n';
  33. }
  34.  
  35. int main()
  36. {
  37.     const int arrSize{ 10 };
  38.     int Arr[arrSize]{ 3,5,7,9,4,1,6,8,10,2 };
  39.  
  40.     PrintArr(Arr, arrSize);
  41.  
  42.     ArrSort(Arr, arrSize);
  43.     PrintArr(Arr, arrSize);
  44.  
  45.     ArrSort(Arr, arrSize, true);
  46.     PrintArr(Arr, arrSize);
  47.  
  48.     return 0;
  49. }
  50.  
  51. Задание 2. Написать функцию, которая сортирует первую
  52. половину массива по убыванию, а вторую — по возрастанию,
  53. используя сортировку простыми вставками.
  54.  
  55. #include <iostream>
  56.  
  57. void ArrSortInsert(int arr[], int size, int beginSort, int endSort, bool sortUp = false)
  58. {
  59.     int tmp{ 0 };
  60.     int UpDownIdx{ 1 };
  61.     if (sortUp == true) { UpDownIdx = -1; }
  62.  
  63.     for (int insPos{ beginSort + 1 }; insPos <= endSort; ++insPos)
  64.     {
  65.         for (int testPos{ insPos }; testPos > beginSort; --testPos)
  66.         {
  67.             if ((arr[testPos] * UpDownIdx) < (arr[testPos - 1] * UpDownIdx))
  68.             {
  69.                 tmp = arr[testPos];
  70.                 arr[testPos] = arr[testPos - 1];
  71.                 arr[testPos - 1] = tmp;
  72.             }
  73.         }
  74.     }
  75. }
  76.  
  77. void HalfArrSort(int arr[], int size)
  78. {
  79.     int leftHalfBegin{ 0 };
  80.     int leftHalfEnd{ (size / 2) - 1 };
  81.     int rightHalfBegin{ size / 2 };
  82.     int rightHalfEnd{ size - 1 };
  83.  
  84.     ArrSortInsert(arr, size, leftHalfBegin, leftHalfEnd);
  85.     ArrSortInsert(arr, size, rightHalfBegin, rightHalfEnd, true);
  86. }
  87.  
  88. void PrintArr(const int arr[], int size)
  89. {
  90.     for (int i{ 0 }; i < size; ++i) { std::cout << arr[i] << ' '; } std::cout << '\n';
  91. }
  92.  
  93. int main()
  94. {
  95.     const int arrSize{ 10 };
  96.     int Arr[arrSize]{ 3,5,7,9,4,1,6,8,10,2 };
  97.  
  98.     PrintArr(Arr, arrSize);
  99.  
  100.     HalfArrSort(Arr, arrSize);
  101.     PrintArr(Arr, arrSize);
  102.  
  103.     return 0;
  104. }
  105.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement