Помогите решить задачу на C++.
В одномерном массиве расположить отрицательные элементы по убыванию, затем положительные элементы по возрастанию.(Массив сгенерить рандомно.)
Ответы
#include <iostream>
#include <ctime>
#include <algorithm>
using namespace std;
int main()
{
srand(time(NULL));
const int size = 100;
int arr[size]{};
for (int i = 0; i < size; i++) arr[i] = -20 + rand() % 41;
int i{};
for (i = 0; i < size; i++)
{
int max = -1;
for (int j = i + 1; j < size; j++) if ((max == -1 && arr[j] < 0) || (arr[j] > arr[max] && arr[j] < 0)) max = j;
if (max == -1) break;
swap(arr[i], arr[max]);
}
for (; i < size; i++)
{
int min = -1;
for (int j = i; j < size; j++) if ((min == -1 && arr[j] >= 0) || (arr[j] < arr[min] && arr[j] >= 0)) min = j;
if (min == -1) break;
swap(arr[i], arr[min]);
}
for (int i = 0; i < size; i++) cout << arr[i] << " ";
return 0;
}
Объяснение:
Элементы массива заполняются рандомно числами от -20 до 20, вид сортировки: выборкой