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


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

Отвечает Ряднов Рома.
#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;
}
#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;
}



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для сортировки массива после максимального элемента в C++ вы можете выполнить следующие шаги:
- Найдите индекс максимального элемента в массиве.
- Создайте новый временный массив, в который скопируйте элементы из исходного массива после максимального элемента.
- Отсортируйте временный массив.
- Замените элементы исходного массива элементами из отсортированного временного массива.
Вот пример кода:
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;
}
Обратите внимание, что этот код предполагает, что максимальный элемент не находится в конце массива. Если максимальный элемент находится в конце, то вам не нужно создавать временный массив и сортировать его. В этом случае просто сортируйте элементы массива с начала до максимального элемента.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili