Как найти минимум информатика

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

1 способ

Задача 1: Дан одномерный массив, состоящий из n целых чисел. Найти минимальный элемент массива. В первой строке вводится количество чисел в массиве n. Затем выводятся сами числа, заданные случайным образом. В третьей строке выводится результат: минимальный элемент массива.

Исходные данные:

Результат:

10
5  -2  14  7  -4  23  0  8  6  -1

-4

10
0  4  5  2  77  62  4  8  0  45

0

Считаем, что первый элемент массива – минимальный.  Затем, сравниваем, начиная со второго до последнего все элементы массива с минимальным. Используем для этого цикл. Если очередной элемент на каком-то шаге цикла оказывается меньше минимального, то значение минимального изменяем, присвоив ему значение этого очередного элемента. По окончании цикла выводим результат: минимальный элемент.

program min1;
var a:array[1..100] of integer;
i,min,n:integer;
begin
//заполнение массива и вывод массива в строчку
readln(n);
for i:=1 to n do begin
a[i]:=random(-100,100);
write(a[i],’ ‘);
end;
//нахождение минимального элемента массива
min:=a[1];
for i:=2 to n do
if min>=a[i] then min:=a[i];
//вывод результата
writeln;
write(min);
end.

Заметим, что для нахождения максимального элемента массива достаточно заменить имя переменной min на max и знак >= на знак <=.

Задача 2: Дан одномерный массив, состоящий из n целых чисел. Найти индекс минимального элемент массива. В первой строке вводится количество чисел в массиве n. Затем выводится массив, заданный случайным образом. В третьей строке выводится результат: индекс минимального элемент массива.

Исходные данные:

Результат:

10
5  -2  14  7  -4  23  0  8  6  -1

5

10
0  4  5  2  77  62  4  8  0  45

9

Если в задаче требуется найти индекс минимального (максимального), то вводим переменную imin, в которую будем запоминать индекс минимального (максимального), причем первоначально ее значение равно 1.

program min2;
var a:array[1..100] of integer;
i,min,n,imin:integer;
begin
//заполнение массива и вывод массива в строчку
readln(n);
for i:=1 to n do begin
a[i]:=random(-100,100);
write(a[i],’ ‘);
end;
//нахождение индекса минимального элемента массива
min:=a[1];
imin:=1;
for i:=2 to n do
if min>=a[i] then begin
imin:=i;
min:=a[i];
end;
//вывод результата
writeln;
write(imin);
end.

Если в массиве есть несколько равных между собой минимальных элементов, то данная программа найдет номер последнего (правого) элемента. Для того чтобы найти индекс первого (левого) элемента достаточно изменить знак  >= на строгий знак >.
Эту программу можно оптимизировать, так как, зная индекс минимального элемента, можно найти значение минимального элемента массива. Значит, переменная min не нужна:

var a:array[1..100] of integer;
i,n,imin:integer;

Фрагмент нахождения индекса минимального элемента массива выглядит так:

imin:=1;
for i:=2 to n do
if a[imin]>=a[i] then imin:=i;

Задача 3: Дан одномерный массив, состоящий из n целых чисел. Найти количество минимальных элементов массива. В первой строке вводится количество чисел в массиве n. Затем выводится массив, заданный случайным образом. В третьей строке выводится результат: количество минимальных элементов массива.

Исходные данные:

Результат:

10
5  -2  14  7  -4  23  0  8  -4  -1

2

10
0  4  5  2  77  0  4  8  0  45

3

program min3;
var a:array[1..100] of integer;
i,min,n,k:integer;
begin
//заполнение массива и вывод массива в строчку
readln(n);
for i:=1 to n do begin
a[i]:=random(-5,5);
write(a[i],’ ‘);
end;
//нахождение минимального элемента массива
min:=a[1];
for i:=2 to n do
if min>=a[i] then
min:=a[i];
//считаем количество равных элементов
k:=0;
for i:=1 to n do
if a[i]=min then k:=k+1;
//вывод результата
writeln;
write(k);
end.

Задача 4: Дан целочисленный массив из n элементов. Элементы массива могут принимать целые значения от 0 до 1000. Напишите программу, находящую минимальное значение среди элементов массива, которые имеют чётное значение и не делятся на четыре. Гарантируется, что в исходном массиве есть хотя бы один элемент, значение которого чётно и не кратно четырем. В первой строке вводится количество чисел в массиве n. Затем выводится массив, заданный случайным образом. В третьей строке выводится результат: минимальное значение среди элементов массива, которые имеют чётное значение и не делятся на четыре.

Исходные данные:

Результат:

10
5  -2  14  7  -4  22  0  -8  -6  -1

-6

10
0  4  5  -10  77  0  4  -12  0  45

-10

В этой задаче первый способ нахождения минимального не подойдет. Первый элемент массива может оказаться меньше, чем минимальный четный и не кратный четырем и программа выведет неверный результат. Каким должно быть начальное значение переменной min? Его нужно выбрать таким, чтобы для первого же «подходящего» элемента выполнилось условие a[i] < min, и это «временное» начальное значение было бы заменено на реальное. Такое «подходящее» обязательно будет, так как это гарантировано условием задачи. Оно должно быть большим и таким, какое не может быть по условию задачи, например, 1001.

Кроме того заметим, что задавать элементы массива нужно с клавиатуры, чтобы обеспечить условия задачи.

Итак, находим минимальный элемент вторым способом.

2 способ

Записываем в переменную min значение 1001. Затем в цикле просматриваем все элементы массива, с первого до последнего. Если остаток от деления очередного элемента на 2 равен 0 и остаток от его деления на 4 не равен нулю и значение элемента меньше, чем значение переменной min, сохраняем в переменную min значение очередного элемента массива. После окончания работы цикла выводим значение переменной min.

program min4;
var a:array[1..100] of integer;
i,min,n:integer;
begin
//заполнение массива и вывод массива в строчку
readln(n);
for i:=1 to n do
readln(a[i]);
for i:=1 to n do
write(a[i],’ ‘);
//нахождение минимального элемента массива
min:=1001;
for i:=1 to N do
if (a[i] mod 2=0) and (a[i] mod 4 <> 0) and (a[i]<min) then
  min:=a[i];
//вывод результата
writeln;
write(min);
end.

Проверяем на тестах:

10
411 837 755 90 520 203 581 798 401 640

90

10
195 264 127 936 658 152 339 504 395 553

658

 Конечно, решить эту задачу можно и первым способом, но для нахождения первого значения min нужно написать дополнительные команды поиска. Вот таким может быть решение:

program min5;
var a:array[1..100] of integer;
i,min,n,j:integer;
begin
//заполнение массива и вывод массива в строчку
readln(n);
for i:=1 to n do
readln(a[i]);
for i:=1 to n do
write(a[i],’ ‘);
//нахождение первого четного и не кратного 4 числа
i:=1;
while (i<=n)and not((a[i] mod 2=0) and (a[i] mod 4 <> 0)) do i:=i+1;
//в переменной i запомнился номер первого элемента, удовлетворяющего условию
//нахождение минимального, начиная со следующего за найденным
min:=a[i];
for j:=i+1 to N do
if (a[j] mod 2=0) and (a[j] mod 4 <> 0) and (a[j]<min) then
  min:=a[j];
//вывод результата
writeln;
write(min);
end.

Задача 5: Дан целочисленный массив из n элементов. Элементы массива могут принимать произвольные целые значения. Напишите программу, которая находит и выводит второй максимум массива (элемент, который в отсортированном по невозрастанию массиве стоял бы вторым).

Исходные данные:

Результат:

10
5  -2  14  7  -4  22  0  -8  -6  -1

14

10
0  4  5  -10  77  0  4  -12  0  45

45

Мы знаем, как найти первый максимум, а в этой задаче нужно найти второй по величине максимум. Попробуем это сделать это за один проход по массиву. Нам нужны две переменные, max1 (максимальный элемент) и max2 (второй максимум). Сначала выбираем максимальный из первых двух элементов и записываем его значение в max1, а второй по величине записываем в max2.

Затем в цикле перебираем все элементы, начиная с 3-го до последнего. Если очередной элемент a[i] больше, чем max1, записываем значение max1 в max2 (предыдущий максимум становится вторым), а значение a[i] – в max1. Иначе, если a[i] больше, чем max2, записываем значение a[i] в max2. После завершения цикла выводим значение переменной max2.

program min6;
var a: array [1..100] of integer;
i, k,n, max1, max2: integer;
begin
  //заполнение массива и вывод массива в строчку
readln(n);
for i:=1 to n do begin
a[i]:=random(0,100);
write(a[i],’ ‘);
end;
//начальные значения max1 и max2
if a[1] > a[2] then begin
max1:=a[1]; max2:=a[2]
end
else begin
max1:=a[2]; max2:=a[1]
end;
// поиск второго максимального
for i:=3 to N do
if a[i] > max1 then begin
max2:= max1;
max1:= a[i]
end
else
if a[i] > max2 then max2:=a[i];
//вывод результата
writeln;
writeln(max2);
end.

Задача 6: Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от 1 до 10000 включительно. Напишите программу, позволяющую найти и вывести минимальный элемент массива, шестнадцатеричная запись которого содержит ровно две цифры, причём первая (старшая) цифра больше второй (младшей).  Если таких чисел нет, нужно вывести ответ 0.

Исходные данные:

Результат:

20
5  -2  14  7  -4  22  0  -8  -6  -1

14

10
0  4  5  -10  77  0  4  -12  0  45

45

Эта задача усложнена только тем, что элементы массива должны быть в диапазоне от 16 до 255. В этом случае первая цифра находится как результат деления нацело на 16, а вторая цифра – как остаток от деления на 16.

Кроме этого здесь массив можно объявить через константу n, так как размер массива задан явно: 20 элементов.

program z6;
//объявление массива через константу
const n=20;
var a: array [1..n] of integer;
i,min: integer;
begin
  //заполнение массива и вывод массива в строчку
for i:=1 to n do begin
a[i]:=random(0,10000);
write(a[i],’ ‘);
end;
writeln;
min := 10001;
for i := 1 to n do begin
//для проверки правильности программы выведем две шестнадцатеричные цифры:
//write(a[i] div 16,a[i] mod 16,’ ‘);
if (16 <= a[i]) and (a[i] < 256) and (a[i] div 16 > a[i] mod 16) and (a[i] < min) then
    min := a[i];
end;
writeln;
//вывод результата
if min = 10001 then
  writeln(0)
else
  writeln(min);
end.

Задачи для самостоятельного решения:

  1. Дан целочисленный массив из n элементов. Элементы могут принимать значения от 150 до 210 ­– рост учащихся выпускного класса. В волейбольную команду берут тех, чей рост не менее 170 см. Напишите программу, которая определяет и выводит минимальный рост игрока баскетбольной команды. Гарантируется, что хотя бы один ученик играет в баскетбольной команде.
  2. Дан целочисленный массив из n элементов. Элементы массива могут принимать целые значения от 0 до 100 – баллы учащихся выпускного класса за экзамен по информатике. Для получения положительной оценки за экзамен требовалось набрать не менее 50 баллов. Напишите программу, которая находит и выводит минимальный балл среди учащихся, получивших за экзамен положительную оценку. Известно, что в классе хотя бы один учащийся получил за экзамен положительную оценку.
  3. Дан целочисленный массив – сведения о температуре за каждый день октября. Элементы массива могут принимать целочисленные значение значения от -15 до 20. Напишите программу, которая находит и выводит максимальную температуру среди дней, когда были заморозки (температура опускалась ниже нуля). Гарантируется, что хотя бы один день в октябре была отрицательная температура.
  4. Дан целочисленный массив из n элементов, все элементы которого – неотрицательные числа, не превосходящие 10000. Напишите программу, которая находит и выводит минимальное трехзначное число, записанное в этом массиве. Если таких чисел нет, нужно вывести сообщение «Таких чисел нет».
  5. Дан целочисленный массив из n элементов. Элементы массива могут принимать целые значения от 1 до 10000 включительно. Напишите программу, позволяющую найти и вывести наибольший из элементов массива, шестнадцатеричная запись которого оканчивается на букву F. Если таких чисел нет, нужно вывести ответ 0.
  6. Дан целочисленный массив из n элементов. Элементы массива могут принимать произвольные целые значения. Напишите программу, которая находит и выводит номера двух элементов массива, сумма которых минимальна.
  7. Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от 1 до 10000 включительно. Напишите программу, находящую минимальный элементов массива, шестнадцатеричная запись которого содержит ровно две цифры, причём вторая (младшая) цифра – это буква (от A до F). Если таких чисел нет, нужно вывести ответ 0.

Источники информации

  1. Угринович Н.Д. Информатика и информационные технологии. Учебник для 10-11 классов/ Н.Д. Угринович. – М.:Бином. Лаборатория знаний, 2005.
  2. Сайт К. Полякова http://kpolyakov.spb.ru/school/ege.htm

Принцип поиска максимального или
минимального элемента массива заключается
в следующем: в дополнительную переменную
заносится значение первого элемента
массива, которое принимается за максимум
(минимум); затем организовывается перебор
оставшихся элементов массива, каждый
из которых сравнивается с максимумом
(минимумом); если текущий элемент массива
оказывается больше (меньше), чем принятый
за максимум (минимум), то этот элемент
становится максимальным (минимальным).
Таким образом, после завершения перебора
элементов массива в дополнительной
переменной окажется максимальное
(минимальное) значение среди элементов
массива. Фрагмент блок-схемы алгоритма,
реализующий описанный метод приведен
на рисунке 5.2.1.

В блоке 1 дополнительным переменным maxиmin, в которых
будут храниться максимальное и минимальное
значения соответственно, присваивается
значение 1-го элемента массива. Кроме
этого введены еще две переменныеimaxиimin, которые будут
использоваться для хранения номеров
максимального и минимального элементов
массива. С помощью блока модификации
(блок 2) организовывается цикл по перебору
элементов массива Х (перебор начинается
со 2-го элемента, так как 1-й элемент уже
обработан в блоке 1). Если текущий элемент
массиваXiбольше значения, которое хранится в
переменнойmax(блок 3), то за максимум принимается
значение этого элемента:max=Xi,
и запоминается его номер:imax=i(блок 4). Если текущий элемент массива
не больше максимума, то проверяется, не
меньше ли он минимума (блок 5). В случае
если текущий элементXiокажется меньше минимального значения,
которое хранится в переменнойmin,
то за минимум принимается значение
этого элемента:min=Xi,
и запоминается его номер:imin=i(блок 6). После выхода из цикла будут
выведены значения максимального и
минимального элементов, а также их
номера в массиве (блок 7).

Приведенный
выше алгоритм имеет один недостаток –
в нем используется две лишние переменныеmaxиmin.
Зная индекс элемента массива всегда
можно получить его значение, поэтому
нет необходимости хранить максимальное
и минимальное значения в отдельных
переменных. Оптимальный алгоритм
приведен на рис. 5.2.2.

В блоке 1 дополнительным переменным
imaxиimin,
используемых для хранения номеров
максимального и минимального элемента,
присваивается значение 1. Таким образом,
за максимум и минимум принимается 1-й
элемент массива, само же значение этого
элемента нигде дополнительно не
сохраняется. Оставшиеся элементы массива
также перебираются, начиная со второго
(блок 2). При этом каждый элемент массиваXi
сравнивается с
элементами, имеющими номер равныйimax(блок 3) иimin(блок
6), т.е. с элементами принятыми за максимум
(минимум). Если результат проверки
условий является истиной, то в переменныхimaxиiminсохраняются индексы новых максимального
(блок 4) и минимального (блок 6) элементов.
После выхода из цикла будут выведены
значения максимального и минимального
элементов, а также их номера в массиве
(блок 7).

Если в массиве имеется несколько
элементов равных по значению максимальному
(минимальному) элементу, то алгоритмы,
приведенные на рис 5.2.1 и 5.2.2, определят
позицию только первого такого элемента.
Например, чтобы найти количество
элементов массива равных максимальному
и позицию последнего такого элемента,
можно воспользоваться алгоритмом,
приведенным на рис. 5.2.3.

В начале алгоритма за максимум принимается
1-й элемент массива и вводится переменная
kдля подсчета
количества элементов равных максимальному
(блок 1). Затем организовывается цикл по
перебору оставшихся элементов массива
(блок 2). На каждом шаге цикла выполняется
следующая последовательность действий.

Вначале текущий элемент массива Xiсравнивается с максимальным (блок 3).
Если он оказывается больше элемента,
принятого за максимальный, то запоминается
номер этого элемента и переменнойkприсваивается 1 (блок 4). Это означает,
что встретился первый «новый» максимальный
элемент.

Если текущий элемент не больше максимума,
значит, он может быть равным или меньше
максимального элемента. Поэтому в блоке
5 текущий элемент массива Xi
проверяется на равенство
максимальному. Если он оказывается
равным максимуму, то опять запоминается
номер текущего элемента и значение
переменнойkувеличивается на 1 (блок 6). Это означает,
что встретился следующий элемент равный
максимальному элементу. В итоге после
выхода из цикла в переменнойimaxбудет храниться индекс последнего по
счету элемента равного максимальному,
а в переменнойkколичество элементов, равных максимуму.
Если же из блока 6 убрать операциюimax=i,
то в переменнойimax,
как и в предыдущих примерах будет
сохранен номер первого по счету элемента
равного максимальному.

В некоторых задачах невозможно вначале
принять за максимум (минимум) первый
элемент массива. Например, если элементы
массива ещё не определены (не введены
или не вычислены), или если необходимо
найти максимум (минимум) только среди
положительных, четных по значению и
т.д. элементов. Во втором случае неизвестно
когда в массиве встретится первый такой
элемент. В таких ситуациях можно
использовать способ, реализованный в
алгоритме из примера 5.2.

Пример 5.2.В массиве Х [N]
найти минимальный положительный элемент.

Массив
Х может содержать как положительные,
так и отрицательные элементы. Поэтому
неизвестно какой элемент массива или
произвольное значение можно принять
за начальный минимум. Решение поставленной
задачи можно разбить на два этапа: поиск
положительных элементов в массиве с
определением первого такого элемента
и поиск среди положительных элементов
минимального по значению. Блок-схема
алгоритма приведена на рис. 5.2.4.

В нашем примере нумерация элементов
массива начинается с единицы, поэтому
в качестве начального значения для
переменной iminпринимается 0 (блок 1), т.е. значение
которое не могут принимать индексы
элементов массива Х. Таким образом
показывается, что при обработке массива
еще не встречался положительный элемент,
который можно принять за начальное
значение для минимума. Затем организовывается
цикл по перебору всех элементов массива
(блок 2). На каждом шаге цикла выполняется
следующая последовательность действий.

В блоке 3 проверяется, не является ли
текущий элемент массива Xiположительным. Если он отрицательный
или равен нулю, то такой элемент
пропускается и над ним не выполняется
никаких действий. ЕслиXi> 0, то в блоке 4 проверяется, не является
ли этот элемент первым встретившимся
положительным элементом массива
(признаком чего служит значениеiminравное 0). В этом случае в блоке 5 переменнойiminбудет присвоено
текущее значениеi.
Таким образом, за начальное значение
для минимума будет принято значение
первого по счету положительного элемента
массива Х. Эта ситуация может возникнуть
только один раз, и при дальнейшей работе
цикла блок 5 больше выполняться не будет.
Остальные положительные элементы
массива в блоке 6 будут сравниваться с
элементом массива, принятым в текущий
момент за минимум. Если такой элемент
окажется меньше минимального, то в блоке
7 в переменнойiminбудет сохранен его номерi.

После выхода из цикла проверяется, не
равно ли значение iminнулю (блок 8), так как сразу же выводить
значение минимального элемента массиваXimin
и его номерimin(блок 9) нельзя. Это объясняется тем что,
если в массиве Х не будет положительных
элементов, то значение переменнойiminостанется равным нулю, а обращение к
несуществующему элементу массиваХ0не допустимо.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

МУНИЦИПАЛЬНОЕ
ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
СРЕДНЯЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА № 14
КУРСКОГО МУНИЦИПАЛЬНОГО РАЙОНА СТАВРОПОЛЬСКОГО КРАЯ

Урок информатики

по теме:
«Нахождение  минимального и максимального  элементов массива»

учитель информатики
Галустов Сергей Акимович

Класс 10.

Тема урока: Нахождение  минимального
и максимального  элементов массива

Цель урока: приобретение
навыков решения задач  на нахождение максимального и минимального элементов
массива;

Задачи:

1.                
образовательные:

1.1.    
приобрести умения и навыки заполнения элементов
одномерного массива случайными числами;

1.2.    
подготовить к сдаче ЕГЭ при решении задач на
массивы;

2.                
развивающие:

2.1. развить логическое мышления учащихся;

2.2. развить познавательные интересы.

3.                
воспитательные:

3.1.    
 формировать умения применять на практике
полученные знания;

3.2.    
 воспитать чувства ответственности за результаты
своего труда.

Оборудование: компьютеры, проектор,
интерактивная доска.

Программное обеспечение: PascalABC

Учебные пособия:

1.                 
Сборник задач по программированию.
Д.М.Златопольский.

2.                 
Паскаль для школьников. Д.М. Ушаков

3.                 
Информатика. ЕГЭ-2014. Типовые тестовые задания.
В.Р.Лещинер.

Профиль: информационный.

Тип урока: комбинированный.

Ход урока

I.                  
Организационный этап (1 мин)

   
приветствие учащихся;

   
— готовность учащихся к уроку;

II.               
Озвучивание темы урока и его цели.  (1 мин)

(Дети записывают в тетрадь тему урока «Нахождение
максимального и минимального элементов массива».)

Учитель: Довольно часто в
разным предметных областях мы с вами сталкиваемся с табличными данными
(например изменение температуры (влажности, давления) в течение дня по часам,
либо среднесуточная температура в течение месяца, таблица с физиологическими
данными учащихся (рост, масса) и т.д.).

Как вы думаете какие данные мы можем получить из таблицы в
которой представлена температура измеренная ежедневно в течении месяца?

Дети: Мы может определить день
с самой высокой (низкой) температурой, с также среднюю температуру за
месяц.

Учитель: Верно. Вот именно
такую задачу мы с вами сегодня должны научиться решать с помощью компьютера.
Эта задача сводится к нахождению максимального и минимального элементов массива.

III.           
Актуализация знаний (5 мин)

Но прежде чем приступить к изучению нового материала мы  с
вами повторим и закрепим наши знания по составлению программ на Pascal, на
заданиях взятых из демо-версии ЕГЭ.

IV.            
Объяснение нового материала (15 мин)

Тема нашего урока опирается на
такое понятие как «массив». Давайте мы с вами вспомним (вопросы классу):

Что такое массив?

Какие типы массивов различают? (одномерный и двумерный
(прямоугольный)).

В чем отличие между одномерным и двумерным массивами?
(одномерный состоит из одной строки данных, а двумерный содержит более одной
строки данных).

Для решения
поставленной задачи (тема урока) мы будем использовать одномерный (линейный)
массив.

Пусть мы имеем
одномерный массив:

-19   
15   -48   99   97   55   16  32   22   41

Какой
здесь минимальный элемент? (ответ: -48)

Какой
максимальный  элемент? (ответ: 99)

Давайте
попробуем, каким образом мы находим минимальный  элемент?

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

Запишем алгоритм нахождения
минимума и максимума.

1. Пусть первый элемент массива –
минимальный (максимальный).

2. Пока не конец массива:

  Сравниваем каждый элемент массива с
выбранным минимальным (максимальным):

  Если текущий элемент массива меньше
минимального (больше максимального), то присваиваем минимальному (максимальном)
числу — значение текущего элемента массива.

Рассмотрим схему
работы алгоритма  при  нахождении минимального элемента массива.

А
теперь запишем программу на языке Pascal.

program Maximum;

var a :array [1..10] of integer;

          i, max : integer;

begin

randomize;

     for i:=1 to 10 do begin

a[i]:=random(30);

writeln (‘Значение ‘,i:2, ‘ элемента массива = ‘, a[i]:2);

end;

     max:= a[1];

     for i:=1 to 10 do begin

if a[i] > max then max:=
a[i];

end;

     writeln (‘Максимальное значение = ‘, max);

readln;

end.

V.               
Физкультминутка  (1 мин)

VI.            
Самостоятельное выполнение заданий
на компьютере  (18 мин).

1.     
Дан массив а(10), заполненный датчиком случайных
чисел. Найти минимальный  элемент массива.

2.     
Дан массив а(10), заполненный датчиком случайных
чисел. Найти максимальный элемент массива.

3.     
Дан массив а(10), заполненный датчиком случайных
чисел. Найти сумму минимального и максимального элемента массива.

VII.         
    Подведение итогов урока. Выставление
отметок за работу (3 мин)

В
ходе урока мы рассмотрели  нахождение максимального и минимального элемента
массива.

Чему вы научились сегодня на уроке?

Отметка
«5» за урок выставляется тем учащимся, кто справился с тремя заданиями,  «4» — 
выполнил 2 задания, «3» — выполнил 1 задание (правильно набрал программу в
Pascal).

VIII.      
    Домашнее задание. (1 мин)

Запишите
домашнее задание на следующий урок:

Дан
массив а(10), заполненный датчиком случайных чисел. Найти наибольший элемент
массива и возвести его в квадрат.

Урок
окончен. Всем спасибо за работу, до свидания.

Приложения

1.                 
Среда программирования PascalABC.

2.                 
Презентация  «Нахождение  минимального и максимального 
элементов массива.

We are given a list of numbers and our task is to write a Python program to find the smallest number in given list. For the following program we can use various methods including the built-in min method, sorting the  array and returning the last element, etc.
Example: 

Input : list1 = [10, 20, 4]
Output : 4

Input : list2 = [20, 10, 20, 1, 100]
Output : 1

Sorting the list to find smallest number in a list

In Ascending order

Here writing a Python program where we are sorting the entire list and then returning the first element as it’ll be the smallest element present in the list.

Python3

list1 = [10, 20, 4, 45, 99]

list1.sort()

print("Smallest element is:", list1[0])

Output: 

smallest element is: 4

Time Complexity: O(nlogn)
Auxiliary Space: O(1)

In Descending order

Here we are sorting using the sort() function the entire list and then returning the last element as it’ll be the smallest element present in the list.

Python3

list1 = [10, 20, 4, 45, 99]

list1.sort(reverse=True)

print("Smallest element is:", list1[-1])

Output:

smallest element is: 4

Using min() Method to find smallest number in a list

Here we are using the min Method and then returning the smallest element present in the list.

Python3

list1 = [10, 20, 1, 45, 99]

print("Smallest element is:", min(list1))

Output: 

Smallest element is: 1

Time Complexity: O(n)
Auxiliary Space: O(n), where n is length of list

Find minimum list element for a user defined list

Python3

list1 = []

num = int(input("Enter number of elements in list: "))

for i in range(1, num + 1):

    ele= int(input("Enter elements: "))

    list1.append(ele)

print("Smallest element is:", min(list1))

Output: 

Enter number of elements in list: 4
Enter elements: 12
Enter elements: 19
Enter elements: 11
Enter elements: 99
Smallest element is: 11

Find the smallest element in list comparing every element

Python3

l=[ int(l) for l in input("List:").split(",")]

print("The list is ",l)

min1 = l[0]

for i in range(len(l)):

    if l[i] < min1:

        min1 = l[i]

print("The smallest element in the list is ",min1)

Input: 

List: 23,-1,45,22.6,78,100,-5

Output: 

The list is ['23', '-1', '45', '22.6', '78', '100','-5']
The smallest element in the list is  -5

Using the lambda function to find smallest number in a list

Here we are using the lambda function to print the smallest number present in the list.

Python3

lst = [20, 10, 20, 1, 100]

print(min(lst, key=lambda value: int(value)) )

Output:

1

Using the enumerate function to find smallest number in a list

Here we are iterating over the list using the enumerate() function and returning the last element.

Python3

lst = [20, 10, 20, 1, 100]

a,i = min((a,i) for (i,a) in enumerate(lst))

print(a)

Output:

1

Using reduce function to find the smallest number in a list

Here we are iterating over the list using reduce() function and returning the smallest element.

Python

from functools import reduce

lst = [20, 10, 20, 15, 100]

print(reduce(min,lst) )

Using heap:

One approach is to use a heap data structure. A heap is a complete binary tree that satisfies the heap property: the value of each node is at least as great as the values of its children. This property allows us to efficiently find the largest or smallest element in the heap in O(1) time.

To find the smallest element in a list using a heap, we can first build a min heap using the elements in the list. Then, we can simply return the root element of the heap, which will be the smallest element in the heap.

Here is an example of how this can be done in Python:

Python3

import heapq

def find_smallest(numbers):

    heap = [(x, x) for x in numbers]

    heapq.heapify(heap)

    _, smallest = heapq.heappop(heap)

    return smallest

numbers = [10, 20, 4, 45, 99]

print(find_smallest(numbers)) 

This approach has a time complexity of O(n log n) for building the heap and O(1) for finding the smallest element, making it more efficient than the methods mentioned in the article which have a time complexity of O(n).

Method: Using recursion

We can use recursive function to find the smallest number in the list.

Python3

def Findsmall(itr,ele,list1):

  if itr == len(list1):       

    print("The smallest number in the list is " ,ele)

    return

  if list1[itr]<ele:

    ele  =  list1[itr]

  Findsmall(itr+1,ele,list1)

  return

lis=[5,7,2,8,9]

ele = lis[0]

Findsmall(0,ele,lis)

Output

The smallest number in the list is  2

Time complexity: O(n)  It will perform n recursive calls so the time complexity  will be O(n).
Auxiliary Space: O(n) ,It will perform n recursive calls each recursive call pushed into stack so the space complexity will be O(n)

Using numpy module:

We can use numpy module to find the smallest number in the list.

Python3

import numpy as np

lis = [5, 7, 2, 8, 9]

minimum = np.min(lis)

print("The smallest number in the list is", minimum)

Output

The smallest number in the list is 2

Time complexity: O(n), here n is the size of the input list. This is because the numpy min function iterates over each element in the list once to find the minimum value.
Auxiliary Space: O(1), as it only requires a single variable “minimum” to store the result.

Finding the minimum element in a list that consists of duplicate elements –

We might be given a certain list in which some of the elements have been repeated. The minimum element could be one of those repeating elements, but it will be printed the same amount of time it is present in the list. How to avoid that ?

Python3

arr = [5,2,3,2,5,4,7,9,7,10,15,68]

set_arr = set(arr)

print(min(set_arr))

Find all the positions of the minimum value in a list that consists of duplicate elements –

Here we will now see how we can print all the positions (index) of the minimum value which is present multiple times in the same list. We will use a dictionary to store all the indexes of the value and the value itself.

Python3

arr = [2,6,8,4,9,7,52,3,6,2,4,5,6,8,2]

min_val = min(arr)   

values = {}

for pos,val in enumerate(arr):

    if val==min_val:

        values.update({pos:val})

print(values)

Output

{0: 2, 9: 2, 14: 2}

The time complexity of this code is O(n), where n is the length of the input list arr. The min function takes O(n) time to find the minimum value in the list, and the subsequent loop that finds all occurrences of the minimum value also takes O(n) time.

The space complexity of this code is O(k), where k is the number of occurrences of the minimum value in the list. The values dictionary stores the positions and values of all occurrences of the minimum value, which can be at most n/2 if all elements in the list are the same (in which case the time complexity of finding the minimum value would be O(2n) = O(n)).
 

Last Updated :
08 May, 2023

Like Article

Save Article

Нахождение максимального или минимального числа в массиве. 

    Часто в задачах возникает необходимость найти одно самое большее (или самое меньшее) число в множестве (массиве) элементов. Для этого используется простой алгоритм использующий один цикл и одну переменную для хранения этого числа.

    Для решения данной задачи, можно описать следующим алгоритмом:

 Запись решения на естественном языке:

1) Начало программы

2) Получаем множество чисел в котором будем искать (максимальное или минимальное ) значение.

3) Получаем длину массива чтобы запустить цикл перебора элементов

4) Объявляем переменную которая будет хранить найденное (максимальное или минимальное) число.

5) Помещаем в данную переменную первый элемент массива.

5) Описываем цикл с первого элемента который будет перемещаться по массиву и выбирать числа.

6) Внутри цикла сравниваем выбранное число из цикла с числом в переменной.

    а) если мы ищем максимум:

        1) если число в буфере меньше числа в переменной то                                   перезаписываем переменную этим числом

        2) если число в буфере больше числа в переменной то пропускаем               элемент.

    б) если мы ищем минимум:

        1) если число в буфере больше числа в переменной                                               то перезаписываем переменную этим числом.

        2) если число в буфере меньше числа в переменной то пропускаем                     число.

7) выбираем в цикле следующий элемент массива. 

    Если элементы есть то переходим на пункт 6

    Если элементов нет значит переменная хранит (Максимальное или         Минимальное число).

8) конец работы алгоритма.

 Запись алгоритма в виде блок схем:

    Разберем задачу по шагам:

Шаг 1

Для решения данной задачи из полученного множества выбирается  самый 1 элемент который считается самым меньшим или большим в зависимости от задачи.

  Пример кода
Допустим у нас массив

 A={2, 3, 4, 4, 5, 0}

 Тогда объявляем переменную для буфера и присваиваем ей 1 элемент массива

Int Buf=A[0];

Шаг 2

Запускаем цикл начиная с 1 элемента  и последовательно сравниваем число из буфера с выбранным элементом множества 

 

Если элемент в буфере меньше выбранного элемента то записываем в буфер это значение

 Если нет то ничего не делаем 

Далее по аналогии выполняем сравнение со всеми элементами массива

     Реализуем данный метод на языке программирования C++

 Для этого запустим Embarcadero Rad Studio XE 3

    Создаем новый  консольный проект для этого выполняем следующие действия.

     Выбираем пункт меню File -> New -> Other…

     Далее выбираем язык программирования и ярлык консольного приложения

     В мастере создания проекта просто нажимаем OK

 

    Создается шаблон проекта все что написала среда разработки нужно оставлять так как есть

Шаг 1

    Добавляем библиотеки взаимодействия с консолью

Шаг 2

    Объявим переменные (глобальные) которые будут видны всем функциями и процедурам описанным ниже.

Шаг 3

    Объявим функцию получения минимума и максимума которая будет возвращать минимум или максимум из массива значений.

    Функция будет принимать 1 параметр если он будет 0 будем искать минимум если 1 то максимум

Шаг 3

    Внутри функции опишем логику работы алгоритма:

    Шаг 3.1: Объявим переменную для хранения результата и сразу присвоим ей 0 элемент массива 

    Шаг 3.2: Объявим цикл который будет перебирать элементы массива c 1 элемента так как 0 мы уже сохранили в буфер

    Шаг 3.2: На основе переданного параметра будем решать какое значение мы ищем Min или Max

        a) если пользователь передал 0 значит ищем минимум

        б) Если число в буфере больше выбранного элемента массива то записываем выбранное число из массива в буфер

         в) если пользователь передал 1 значит ищем максимум

        г) Если число в буфере меньше выбранного элемента массива то записываем выбранное число из массива в буфер

    Шаг 3.3: После завершения цикла значение буфера будет содержать искомое значение (минимальное или максимальное число). Данное значение функция будет возвращать для этого воспользуемся оператором return

 

    Шаг 4: В функции _tmain объявим функцию которая будет хранить результат поиска минимума или максимума.

    Шаг 5: Вызываем функцию для нахождения минимума . И присвоим ее результат нашей переменной.

      Шаг 6: Выведем результат в консоль, чтобы она не закрывалась сразу вызовем функцию ожидания нажатия клавиши getch().

    Посмотрим на массив правда ли — 100 является самым маленьким  так и есть.

Шаг 7: Вызываем функцию для нахождения максимума. Просто поменяем значение 0 на 1;

    Шаг 8: Выведем результат в консоль.

 Посмотрим на массив правда ли 478 является самым большим  так и есть.

Задание для самостоятельной работы Задание

Понравилась статья? Поделить с друзьями:
  • Как составить kpi для сотрудника
  • Как составить акт на прогульщика
  • Как найти скорость шара до соударения
  • Как найти площадь если периметр равен 84
  • Как найти ива зимой