- Статья Как найти индекс максимального или минимального элемента массива? C#
- Поиск индексов минимального и максимального элементов массива
- 2 ответа 2
- Всё ещё ищете ответ? Посмотрите другие вопросы с метками java массивы или задайте свой вопрос.
- Похожие
- Подписаться на ленту
- Поиск индекса наибольшего элемента в последовательности
- 4 ответа 4
- Найти индексы максимальных элементов матрицы
- Задача
- Решение
- Функция max() в Python, максимальное значение элемента.
- Находит максимальное значение элемента в последовательности.
- Синтаксис:
- Параметры:
- Возвращаемое значение:
- Описание:
- Примеры поиска максимального значения в последовательности.
- Нахождение самой длинной строки в списке строк.
- Нахождение max() в списке строк, записанных как целые числа.
- Нахождения max() в строке, которая состоит из чисел и строк.
- Определение индекса у максимального значения в списке.
- Нахождение max() для ключа или значения в словаре dict .
- Нахождение списка с наибольшей суммой элементов в списке списков.
- Выбор списка с наибольшим количеством элементов из списка списков.
Статья Как найти индекс максимального или минимального элемента массива? C#
В этой статье хочу показать несколько простых решений, с помощью которых можно найти индекс максимального или минимального элемента массива.
Как найти индекс минимального элемента массива?
Сначала нужно найти минимальный элемент массива, а затем воспользоваться одним из ниже приведенных примеров.
Одномерный массив
Для нахождения индекса минимального элемента в одномерном массиве можно воспользоваться методом IndexOf класса Array, например:
Этот же результат можно получить и с помощью метода FindIndex всё того же класса Array, например:
Если в массиве будет найдено два или более одинаковых минимальных или максимальных значений, то тогда будет получен индекс самого первого из них. Если нужно получить индекс последнего найденного элемента, то тогда можно воспользоваться методом FindLastIndex, например:
Многомерный массив
С помощью методов: IndexOf и FindIndex можно найти индекс элемента только в одномерном массиве. В многомерном массиве индекс элемента будет иметь значения вида: array[0, 0] и найти его можно, например, с помощью обычного цикла for.
Если в многомерном массиве будет несколько одинаковых минимальных или максимальных значений, то тогда можно убрать часть, отвечающую за выход из цикла и получить индекс каждого найденного элемента, например:
Jagged массив
В Jagged массиве каждый элемент представляет собой отдельный массив. Чтобы найти индекс самого минимального значения в массиве также воспользуемся циклом for.
Как найти индекс максимального значения?
Всё то же самое, только сначала нужно найти максимальный элемент массива.
Источник
Поиск индексов минимального и максимального элементов массива
Есть методы, которые находят максимальный и минимальный элементы массива.
Как найти индексы этих элементов?
2 ответа 2
Можно, конечно, отсортировать массив по возрастанию с помощью Arrays.sort() (тогда минимальный элемент будет иметь индекс 0 , а максимальный — array.length — 1 ), но сортировка массива и его изменение ради поиска значений не является оптимальным решением.
Индексы минимального и максимального элементов можно найти за линейное время, не изменяя массив:
За столько времени никто не увидел, что метод findMin работает некорректно?
Тестируйте < 10.2, 2.2, 2.5 >. Только не (array[i] , а (array[i]
Всё ещё ищете ответ? Посмотрите другие вопросы с метками java массивы или задайте свой вопрос.
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.11.2.40635
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник
Поиск индекса наибольшего элемента в последовательности
Недавно начал изучение python и параллельно решаю задачки с http://pythontutor.ru/. И застрял на задаче по циклам while.
Текст задачи: Условие
Последовательность состоит из натуральных чисел и завершается числом 0. Определите индекс наибольшего элемента последовательности. Если наибольших элементов несколько, выведите индекс первого из них. Нумерация элементов начинается с нуля.
Мой код решения:
Тем не менее, два варианта не проходят. Например: Входные данные:2 1 3 0 Ответ: 2 (у меня выдает 1)
Я в общем-то вижу ошибку, но не понимаю как реализовать, что бы решалось не только если цифры вводятся не равномерно по возрастанию\убыванию (такие варианты все решились)
4 ответа 4
Вы проверяете увеличиваете индекс только когда находите большее число, а надо его увеличивать всегда.
И ваш код можно улучшить, если взять за начальные значения не -1 и 0, а значение первого элемента и его индекс.
Чтобы найти индекс наибольшего элемента последовательности, можно использовать встроенную функцию max():
Код принимает целые числа от пользователя—одно число на каждой новой строчке, пока не встретится ноль ( ‘0’ ). Встроенная функция iter(function, end_value) генерирует последовательность, вызывая функцию function() до тех пор пока не встретится end_value .
Встроенная функция map() преобразует строки в числа в данном случае.
Встроенная функция enumerate() генерирует пары индекс, значение. lambda i_v: i_v[1] функция извлекает значение из пары, служа ключём для сравнения, таким образом пары сравниваются по соответствующим значениям.
max() возвращает пару с наибольшим значением.
Использование max() в Питон коде более предпочтительно по сравнению с while-циклом более подходящим для C кода для решения задачи «Поиск наибольшего элемента в последовательности» в Питоне. Старайтесь использовать подходящие идиомы для выбранного языка. Если сама задача неинтересна, а просто ошибку в while-цикле хотите найти, то спрашивайте именно об этом.
Источник
Найти индексы максимальных элементов матрицы
Задача
В двумерном массиве (матрице) найти индексы (номера строк и столбцов) максимальных элементов.
Решение
- mx — заданная матрица;
- max — значение максимального элемента;
- qty — количество максимальных элементов в матрице;
- id — массив для хранения номеров строк и столбцов найденных максимальных элементов;
- i, j — переменные, используемые в качестве счетчиков и текущих индексов элементов массива.
Алгоритм решения задачи:
Первым этапом решения данной задачи является поиск значения максимального элемента матрицы. Для этого переменной max сначала присваивается самое минимальное из возможных значений, после этого каждый элемент матрицы сравнивается со значением max. Если текущий элемент больше, то значение max перезаписывается на него. Поиск максимума можно выполнить в том же цикле, в котором происходит заполнения матрицы.
Допустим, задача усложнена тем, что
- в матрице может быть несколько равных между собой максимальных элементов,
- их индексы нужно не просто вывести на экран, но и сохранить внутри программы.
Если бы требовалось просто вывести индексы первого попавшегося (или единственного) максимального элемента, то достаточно было бы перебрать матрицу, сравнить каждый элемент с ранее найденным максимальным значением. Как только совпадение было бы найдено, вывести на экран значения i и j. После чего прервать выполнение цикла.
Поскольку нужно запомнить индексы максимумов, то в программу вводится дополнительный двумерный массив (матрица) id. Каждая его строка состоит всего из двух элементов, в которых будут храниться номера строки и столбца найденного максимума. Количество строк массива id должно быть таким, чтобы была возможность записать в него индексы всех элементов заданной матрицы, если вдруг все они окажутся максимальными. Однако маловероятно, что все элементы матрицы будут максимальными. Поэтому массив id не будет заполнен полностью. Чтобы отслеживать сколько строк этого массива заполнено (т. е. сколько максимумов найдено), вводится переменная qty.
Итак, перебираем заданную матрицу построчно. Если очередной элемент равен значению max, то увеличиваем на 1 значение qty, а в id в его строку с номером qty записываем индексы i и j найденного максимума.
В конце программы выводим значения заполненных ранее ячеек массива id.
Программа на языке Паскаль:
Пример выполнения программы определения индексов максимальных элементов матрицы:
Источник
Функция max() в Python, максимальное значение элемента.
Находит максимальное значение элемента в последовательности.
Синтаксис:
Параметры:
- iterable — итерируемый объект,
- key — функция сортировки (смотри list.sort() «»),
- default — значение по умолчанию, если итерируемый объект окажется пустым,
- arg1. argN — позиционный аргумент,
- *args — список позиционных аргументов.
Возвращаемое значение:
Описание:
Функция max() возвращает наибольшее значение элемента итерируемого объекта или самое большое из двух или более переданных позиционных аргументов.
- Если указан один позиционный аргумент, он должен быть итерируемым объектом (список, кортеж, словарь и т.д.).
- Если в функцию передается два или более позиционных аргумента, возвращается самый большой из них.
- В случае, когда максимальное значение имеют сразу несколько аргументов. Возвращает первый по порядку элемент с максимальным значением. Это согласуется с другими инструментами сохранения стабильности сортировки, такими как sorted(iterable, key=keyfunc, reverse=True)[0] и heapq.nlargest(1, iterable, key=keyfunc)
Аргумент key — функция подобная той, которая используется в дополнительном методе списков list.sort() . Функция принимает один аргумент и используется для упорядочивания элементов.
Аргумент default по умолчанию указывает объект, который нужно вернуть, если предоставленный итерируемый объект пуст. Если итерация пуста и значение по умолчанию не указано, то возникает ошибка ValueError .
Функция max() сравнивает элементы, используя оператор . Поэтому, все передаваемые в них значения должны быть сопоставимы друг с другом и одного типа, иначе бросается исключение TypeError
При передаче в качестве аргумента текстовых строк, байтовых строк или байтовых массивов, а так же списка символов, максимальное значение будет выбираться исходя из порядка следования символов, в таблице соответствующей кодировки.
Изменено в Python 3.8: Аргумент key может быть None .
Примеры поиска максимального значения в последовательности.
Нахождение самой длинной строки в списке строк.
Найдем самую длинную строку. В качестве ключевой функции используем len() . Она посчитает количество символов в строке каждого элемента списка строк, а функция max() выберет максимальное число. Строки можно передать например как позиционные аргументы, так и списком [‘Jul’, ‘John’, ‘Vicky’] , результат будет тот же.
Нахождение max() в списке строк, записанных как целые числа.
Есть список строк чисел и необходимо найти максимум, как если бы они были целыми числами? Если применить функцию max() к исходному списку «как есть», то она выберет наибольшее значение списка исходя из лексикографической сортировки. Для нахождения максимума, как числа, применим функцию lambda i: int(i) в качестве ключа key , которая «на лету» преобразует элементы списка в целые числа, тогда функция max() выберет то что нам нужно.
Нахождения max() в строке, которая состоит из чисел и строк.
Что бы найти максимум в строке, которая состоит из чисел и строк, необходимо сначала разделить исходную строку на список подстрок. Используем приемы, описанные в примерах функции sum() :
- по разделителю, например пробелу ‘ ‘ или ‘;’ методом строки str.split() ,
- вытащить все цифры из исходной строки при помощи функцией re.findall() .
Затем в цикле перебрать полученный список и все строки с цифрами преобразовать в соответствующие числовые типы и уже потом применить функцию
Далее будем работать с более сложным списком, полученным 1 способом, где встречаются слова. И так, имеем список строк с цифрами и другими строками. Стоит задача: преобразовать строки с цифрами в соответствующие числовые типы и отбросить строки со словами, что бы потом найти максимум.
Задача усложняется тем, что вещественные числа в строках записаны как через запятую, так и через точку. Для необходимых проверок и преобразований определим функцию str_to_num() .
Определение индекса у максимального значения в списке.
Допустим есть список чисел и стоит задача, определить индекс максимального значения в этом списке. Для решения этой задачи необходимо пронумеровать список, т.е. создать кортеж — индекс/число, а затем найти максимум, используя в качестве ключа key=lambda i : i[1] .
Нахождение max() для ключа или значения в словаре dict .
Допустим есть словарь, задача: найти максимальное значение ключа или самого значения ключа и вывести эту пару.
По умолчанию, при нахождении максимального элемента из списка кортежей будет выбираться кортеж, у которого наибольшее значение имеет ключ исходного словаря (первый элемент в кортеже).
Но если необходимо получить пару (key, value) , у которого наибольшее значение имеет значение ключа (второй элемент), то для этого нужно применить лямбда-функцию lambda i : i[1] в качестве аргумента key функции max() , которая укажет, из какого элемента кортежа выбирать наибольшее значение.
Нахождение списка с наибольшей суммой элементов в списке списков.
Для выполнения данной задачи, используем функцию max() , а в качестве ключевой функции применим встроенную функцию sum() .
Выбор списка с наибольшим количеством элементов из списка списков.
Для выполнения данной задачи, используем функцию max() , а в качестве ключевой функции применим встроенную функцию len() .
Источник