Все элементы массива, стоящие до максимального элемента, упорядочить по возрастанию - C (СИ)
Формулировка задачи:
Дан линейный массив из n элементов. Все элементы, стоящие до максимального элемента, упорядочите по возрастанию, а элементы, расположенные после него – по убыванию.
Например: 231456123= 123456321 как то вот так.Помогите не получается блин...
Решение задачи: «Все элементы массива, стоящие до максимального элемента, упорядочить по возрастанию»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { int array[] = {2, 3, 1, 4, 5, 6, 1, 2, 3}; size_t nArray = sizeof(array) / sizeof(*array); size_t i, j, cur; int tmp; for (i = 0; i < nArray; ++i) { printf("%d ", array[i]); } printf("\n"); size_t max = 0; for (i = 1; i < nArray; ++i) { if (array[max] < array[i]) { max = i; } } for (i = 0; i < max - 1; ++i) { cur = i; for (j = i + 1; j < max; ++j) { if (array[cur] > array[j]) { cur = j; } } tmp = array[cur]; array[cur] = array[i]; array[i] = tmp; } for (i = max + 1; i < nArray - 1; ++i) { cur = i; for (j = i + 1; j < nArray; ++j) { if (array[cur] < array[j]) { cur = j; } } tmp = array[cur]; array[cur] = array[i]; array[i] = tmp; } for (i = 0; i < nArray; ++i) { printf("%d ", array[i]); } printf("\n"); system("pause"); return 0; }
Объяснение кода листинга программы
- Объявлен массив
array
типаint
с 9 элементами. - Переменная
nArray
инициализируется значением, равным результату деленияsizeof(array)
наsizeof(*array)
, то есть на размер одного элемента массива, что позволяет получить количество элементов в массиве. - В цикле
for
с переменнойi
от 0 доnArray - 1
выводятся все элементы массива через пробел. - Переменная
max
инициализируется значением 0. Она будет использоваться для хранения индекса максимального элемента массива. - В цикле
for
с переменнойi
от 1 доnArray - 1
происходит поиск индекса максимального элемента массива. - Переменная
cur
инициализируется значениемi
. - В цикле
for
с переменнойj
отi + 1
доmax
включительно производится сравнение элементов массива, начиная с текущего элемента массива, с элементом, находящимся по индексуj
. Если элемент с индексомj
больше текущего, то значение переменнойcur
заменяется наj
. - Переменная
tmp
инициализируется значением текущего элемента массива. - Значение текущего элемента массива заменяется на значение
tmp
, а значениеtmp
заменяется на значение текущего элемента массива. - Цикл выполняется до тех пор, пока не будет найден элемент, меньший текущего.
- Переменная
cur
инициализируется значениемi
. - В цикле
for
с переменнойj
отi + 1
доnArray
включительно производится сравнение элементов массива, начиная с текущего элемента массива, с элементом, находящимся по индексуj
. Если элемент с индексомcur
меньше текущего, то значение переменнойcur
заменяется наj
. - Переменная
tmp
инициализируется значением текущего элемента массива. - Значение текущего элемента массива заменяется на значение
tmp
, а значениеtmp
заменяется на значение текущего элемента массива. - Цикл выполняется до тех пор, пока не будет найден элемент, больший текущего.
- Все элементы массива выводятся на экран.
- Выполняется функция
pause
, предназначенная для приостановки выполнения программы до нажатия клавиши. - Программа возвращает 0, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д