Перейти к содержанию
Найти наибольший элемент и его порядковый номер в массиве
Просмотров 17.8к. Обновлено 15 октября 2021
Заполнить одномерный массив случайными числами. Найти и вывести на экран наибольший его элемент и порядковый номер этого элемента.
Заполнение массива и поиск наибольшего элемента можно выполнять в одном цикле.
Поскольку необходимо найти не только максимальный элемент, но и его индекс, то лучше искать индекс, так как по нему всегда можно получить значение из массива. Конечно, при поиске можно сохранять и индекс, и элемент в двух разных переменных. Однако этого делать не обязательно. До цикла присвоим переменной, в которой будет храниться индекс максимального элемента, значение 1. Это значит, предполагается, что максимальный элемент находится в первой ячейке массива.
Тело цикла будет состоять из следующих действий:
- Сгенерировать случайное число и записать его в очередную ячейку массива.
- Вывести полученное число на экран.
- Если это число больше, чем то, что хранится под индексом, записанным в переменную-максимум, то присвоить этой переменной текущий индекс (не само число!).
После того, как индекс наибольшего элемента будет найден, вывести его на экран. Чтобы вывести элемент по данному индексу, надо использовать выражение извлечения элемента из массива. Например, если max — это индекс, а arr — массив, то выражение будет таким: arr[max].
Pascal
найти максимальный элемент массива паскаль
const N = 10;
var
arr: array[1..N] of integer;
i, max: byte;
begin
randomize;
max := 1;
for i:=1 to N do begin
arr[i] := random(100);
write(arr[i], ' ');
if arr[max] < arr[i] then
max := i;
end;
writeln;
writeln('arr[',max,'] = ',arr[max]);
end.
64 26 99 37 57 64 6 21 48 19
arr[3] = 99
Язык Си
#include < stdio.h>
#define N 10
main() {
int arr[N], i, mx;
srand(time(NULL));
mx = 0;
for (i=0; i< N; i++) {
arr[i] = rand() % 100;
printf("%d ", arr[i]);
if (arr[i] > arr[mx])
mx = i;
}
printf("narr[%d] = %dn", mx, arr[mx]);
}
75 46 7 39 11 29 34 77 86 25
arr[8] = 86
Python
найти максимальный элемент массива python
from random import random
N = 10
arr = [0] * N
mx = 0
for i in range(N):
arr[i] = random() * 100
print("%.2f" % arr[i], end='; ')
if arr[i] > arr[mx]:
mx = i
print("narr[%d] = %.2f" % (mx, arr[mx]))
73.83; 16.23; 30.18; 27.41; 94.27; 46.27; 66.17; 61.07; 18.89; 61.16;
arr[4] = 94.27
КуМир
алг
нач
цел N = 10
целтаб arr[1:N]
цел mx, i
mx := 1
нц для i от 1 до N
arr[i] := irnd(100)
вывод arr[i], " "
если arr[mx] < arr[i] то
mx := i
все
кц
вывод нс,"arr[",mx,"] = ",arr[mx]
кон
57 78 14 96 76 9 19 36 45 54
arr[4] = 96
Basic-256
decimal 1
N = 10
dim arr(N)
mx = 0
for i=0 to N-1
arr[i] = rand * 100
print arr[i] + "; ";
if arr[i] > arr[mx] then mx = i
next i
print "Номер элемента: " + mx
print "Значение элемента: " + arr[mx]
21.9; 58.4; 24.4; 72.6; 88.5; 65.2; 56.6; 65.1; 72.6; 40.4;
Номер элемента: 4
Значение элемента: 88.5
1 ответ
Сортировка:
Сброс на вариант по умолчанию
1
Для нахождения большего элемента в массиве(Предположим int, в вопросе не сказан тип данных) нужно сделать примерно так:
int maxValue = yourList.Max<int>();
А для определнения его индекса можно использовать IndexOf:
int index = Array.IndexOf(yourList, maxValue);
Улучшить ответ
ответ дан 25 дек 2022 в 9:22
FiolDollFiolDoll
12111 бронзовых знаков
Добавить комментарий
|
Всё ещё ищете ответ? Посмотрите другие вопросы с метками
- c#
- массивы
или задайте свой вопрос.
Всё ещё ищете ответ? Посмотрите другие вопросы с метками
- c#
- массивы
или задайте свой вопрос.
anastalex 0 / 0 / 1 Регистрация: 06.12.2015 Сообщений: 143 |
||||
1 |
||||
Вывести порядковый номер максимального элемента заданного массива16.01.2016, 18:05. Показов 10130. Ответов 5 Метки нет (Все метки)
В данном коде в 29 строке (отметила комментарием) я пыталась вывести порядковый номер максимального элемента, но команда выводит номер последнего элемента в массиве. В чём ошибка?
0 |
Perfilov 265 / 165 / 56 Регистрация: 25.02.2015 Сообщений: 435 |
||||
16.01.2016, 18:16 |
2 |
|||
ставьте скобки, иначе у вас iMax безусловно увеличивается.
1 |
0 / 0 / 1 Регистрация: 06.12.2015 Сообщений: 143 |
|
17.01.2016, 17:33 [ТС] |
3 |
Perfilov, теперь номер в массиве постоянно обозначается нулём
0 |
4 / 4 / 1 Регистрация: 13.03.2015 Сообщений: 15 |
|
17.01.2016, 17:46 |
4 |
стоит инициализировать iMax = 1, т.к если первый элемент массива будет максимальным, то условие внутри цикла не сработает и в результате выведет 0.
1 |
0 / 0 / 1 Регистрация: 06.12.2015 Сообщений: 143 |
|
17.01.2016, 18:14 [ТС] |
5 |
Perfilov, Разобралась, спасибо за помощь) Добавлено через 2 минуты
0 |
GbaLog- Любитель чаепитий 3737 / 1796 / 563 Регистрация: 24.08.2014 Сообщений: 6,014 Записей в блоге: 1 |
||||
17.01.2016, 18:17 |
6 |
|||
anastalex, Мне кажется, что так лучше, но это чисто моё мнение.
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
17.01.2016, 18:17 |
6 |
Нахождения максимального элемента массива и его номера.
Алгоритм решения задачи следующий.
Пусть в переменной с именем Maxхранится максимальный элемент массива,
а в переменной с именемNmax- его номер. Предположим, что первый
элемент массива является максимальным,
и запишем его в переменнуюMax,
а вNmaxзапишем его номер
(т.е. 1). Затем все элементы, начиная со
второго, сравниваем с максимальным.
Если текущий элемент массива (i-й)
оказывается больше максимального, то
записываем его в переменнуюMax,
а в переменнуюNmaxтекущее
значение индексаi.
Рис.5 Нахождения
максимального элемента массива и его
номера
Соответствующий
участок программы будет иметь вид:
const
n=10;
var
x: array
[1..n] of
integer;
i, Max, NMax : integer;
begin
{ввод
элементов массива}
Max:=X[1];
Nmax:=1;
for
i:=2 to
N do
if
X[i]>Max then
begin
Max:=X[i];
Nmax:=i;
end;
writeln(‘Max = ‘,Max,’
Max position = ‘, Nmax);
В данном
примере можно обойтись одной переменной
Nmax, т.к. зная позицию
максимального элемента, мы знаем и его
значение. Тогда код можно переписать
так
Nmax:=1;
for
i:=2 to
N do
if
X[i]>X[NMax] then
Nmax:=i;
writeln(‘Max = ‘,X[NMax],’
Max position = ‘, Nmax);
Упорядочивание массива по возрастанию
Решим следующую задачу: задан массив
из nцелых чисел, упорядочить
массив по возрастанию. Блок-схема
представлена на рис.6. Алгоритм
упорядочивания состоит в следующем.
Сравниваем текущий и последующий
элементы массива, если текущий больше
последующего, то меняем их местами. В
результате этих действий самый большой
элемент станет на последнее место, т.е.
наN-е. Теперь повторяем
этот алгоритм дляN-1
элемента массива и устанавливаем
максимальный элемент на (N-1)-е
место. Так повторяем до тех пор, пока не
упорядочим весь массив. Для упорядочивания
по убыванию необходимо при сравнении
элементов массива заменить знак “больше”
на знак “меньше”. Такой метод получил
название пузырьковой сортировки.
Рис.6. Алгоритм
упорядочивания массива
Пример программы
упорядочивания массива (пузырьковая
сортировка).
const
n=10;
var
i,j,b: integer;
y:
array
[1..n] of
integer;
begin
for
i:=1 to
n do
//ввод
элементов массива
begin
write(‘y[‘,i’]=’);
readln (y[i]);
end;
writeln
(‘массив
y ‘);
for
i:=1 to
n do
//вывод
элементов массива
write (y [i],’
‘);
writeln;
for
j:=1 to
n-1 do
for
i:=1 to
n-j do
if
y[i] > y[i+1] then
begin
//
Меняем
элементы местами
b:=y[i];
y[i]:=y[i+1];
y[i+1]:=b;
end;
writeln(‘упорядоченный
массив‘);
for
i:=1 to
n do
write (y[i],’
‘);
writeln;
end.
Пузырьковая сортировка является самой
медленной. Так как для размещения
элемента на свое место необходимо много
раз переставить его с соседними
элементами. Сортировка выбором (selectionsort) работает несколько
быстрее пузырьковой, т.к. в ней существенно
меньше перестановок элементов. Задача
сортировки выбором — искать наименьший
элемент, который затем меняется местами
с элементом из начала массива. Затем
находится наименьший из оставшихся
элементов и меняется местами со вторым
элементом. Процесс продолжается до тех
пор, пока все элементы не займут свое
конечное положение.
const
n=10;
var
i,j,x,k: integer;
M:
array
[1..n] of
integer;
{x-значение
минимального элемента, k—
позиция минимального элемента}
begin
………
For
I:=1 to
N-1 do
begin
k:=i;{запоминаем
начальную позицию и первое значение
минимума}
X:=M[i];
For
J:=i+1
to
n
do
{поиск
нового минимального значения}
If
M[j] < x then
begin
k:=j;
x:=M[k];
end;
If
i<>k then
begin
M[k]:=M[i];{меняем
местами i-й
и минимальный k-й}
M[i]:=x;
end;
end;
……
end.
program pr; const n=50; var c:array [1..n] of integer; i,max,index:integer; begin max:=c[1]; for i:=1 to 50 do begin c[i]:=-10+random(31); // диапазон заполнения массива можешь ставить какой хочешь write(c[i]:3); if c[i]>max then begin max:=c[i]; index:=i; end; end; writeln; writeln('Максимальный элемент: ',max); writeln('Порядковый номер максимального элемента: ',index); end.