Вопрос задан 08.10.2023 в 04:46. Предмет Информатика. Спрашивает Хусаинов Руслан.

Как отсортировать массив после максимального элемента подскажите пожалуйста. С++.

0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Ряднов Рома.
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>

template <typename T>
void swap(T &a, T&b)
{
T t=a;
a=b;
b=t;
}

void printArray(int *array, int length)
{
for (int i=0;i<length;i++)
std::cout<<std::setw(4)<<array[i];
std::cout<<std::endl;
}

int main()
{
srand(time(0));
int length;
std::cin>>length;
int *array=new int[length];
for (int i=0;i<length;i++)
array[i]=rand()%100+1;
printArray(array,length);
int posMax=0;
for (int i=1;i<length;i++)
if (array[posMax]<array[i])
posMax=i;
bool flag=false;
while (flag==false)
{
flag=true;
for (int i=posMax+2;i<length;i++)
if (array[i]<array[i-1])
{
flag=false;
swap(array[i],array[i-1]);
}
}
printArray(array,length);
return 0;
}
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для сортировки массива после максимального элемента в C++ вы можете выполнить следующие шаги:

  1. Найдите индекс максимального элемента в массиве.
  2. Создайте новый временный массив, в который скопируйте элементы из исходного массива после максимального элемента.
  3. Отсортируйте временный массив.
  4. Замените элементы исходного массива элементами из отсортированного временного массива.

Вот пример кода:

cpp
#include <iostream> #include <algorithm> #include <vector> int main() { std::vector<int> arr = {3, 7, 1, 9, 4, 8, 6, 2, 5}; // Ваш исходный массив int maxIndex = std::distance(arr.begin(), std::max_element(arr.begin(), arr.end())); // Найдем индекс максимального элемента if (maxIndex < arr.size() - 1) { // Проверим, что максимальный элемент не находится в конце массива std::vector<int> tempArr(arr.begin() + maxIndex + 1, arr.end()); // Создаем временный массив с элементами после максимального std::sort(tempArr.begin(), tempArr.end()); // Сортируем временный массив // Заменяем элементы исходного массива элементами из отсортированного временного массива for (int i = maxIndex + 1, j = 0; i < arr.size(); i++, j++) { arr[i] = tempArr[j]; } } // Выводим отсортированный массив for (int i : arr) { std::cout << i << " "; } std::cout << std::endl; return 0; }

Обратите внимание, что этот код предполагает, что максимальный элемент не находится в конце массива. Если максимальный элемент находится в конце, то вам не нужно создавать временный массив и сортировать его. В этом случае просто сортируйте элементы массива с начала до максимального элемента.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос