Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Задание 1. Дан массив чисел размерностью 10 элементов. Написать функцию,
- которая сортирует массив по возрастанию или по убыванию, в зависимости от
- третьего параметра функции. Если он равен true, сортировка идет по убыванию,
- если false, то по возрастанию. Первые 2 параметра функции — это массив и его
- размер, третий параметр по умолчанию равен false.
- #include <iostream>
- void ArrSort(int arr[], int size, bool sortUp = false)
- {
- int UpDownIdx{ 1 };
- if (sortUp == true) { UpDownIdx = -1; }
- for (int head{ 0 }; head < size; ++head)
- {
- int sortIdx{ head };
- for (int i{ head + 1 }; i < size; ++i)
- {
- if ((arr[i] * UpDownIdx) < (arr[sortIdx] * UpDownIdx)) { sortIdx = i; }
- }
- if (head != sortIdx)
- {
- int tmp{ arr[head] };
- arr[head] = arr[sortIdx];
- arr[sortIdx] = tmp;
- }
- }
- }
- void PrintArr(const int arr[], int size)
- {
- for (int i{ 0 }; i < size; ++i) { std::cout << arr[i] << ' '; } std::cout << '\n';
- }
- int main()
- {
- const int arrSize{ 10 };
- int Arr[arrSize]{ 3,5,7,9,4,1,6,8,10,2 };
- PrintArr(Arr, arrSize);
- ArrSort(Arr, arrSize);
- PrintArr(Arr, arrSize);
- ArrSort(Arr, arrSize, true);
- PrintArr(Arr, arrSize);
- return 0;
- }
- Задание 2. Написать функцию, которая сортирует первую
- половину массива по убыванию, а вторую — по возрастанию,
- используя сортировку простыми вставками.
- #include <iostream>
- void ArrSortInsert(int arr[], int size, int beginSort, int endSort, bool sortUp = false)
- {
- int tmp{ 0 };
- int UpDownIdx{ 1 };
- if (sortUp == true) { UpDownIdx = -1; }
- for (int insPos{ beginSort + 1 }; insPos <= endSort; ++insPos)
- {
- for (int testPos{ insPos }; testPos > beginSort; --testPos)
- {
- if ((arr[testPos] * UpDownIdx) < (arr[testPos - 1] * UpDownIdx))
- {
- tmp = arr[testPos];
- arr[testPos] = arr[testPos - 1];
- arr[testPos - 1] = tmp;
- }
- }
- }
- }
- void HalfArrSort(int arr[], int size)
- {
- int leftHalfBegin{ 0 };
- int leftHalfEnd{ (size / 2) - 1 };
- int rightHalfBegin{ size / 2 };
- int rightHalfEnd{ size - 1 };
- ArrSortInsert(arr, size, leftHalfBegin, leftHalfEnd);
- ArrSortInsert(arr, size, rightHalfBegin, rightHalfEnd, true);
- }
- void PrintArr(const int arr[], int size)
- {
- for (int i{ 0 }; i < size; ++i) { std::cout << arr[i] << ' '; } std::cout << '\n';
- }
- int main()
- {
- const int arrSize{ 10 };
- int Arr[arrSize]{ 3,5,7,9,4,1,6,8,10,2 };
- PrintArr(Arr, arrSize);
- HalfArrSort(Arr, arrSize);
- PrintArr(Arr, arrSize);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement