C как найти наименьшее число в массиве
Перейти к содержимому

C как найти наименьшее число в массиве

  • автор:

Статья Как найти индекс максимального или минимального элемента массива? C#

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

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

Одномерный массив
Для нахождения индекса минимального элемента в одномерном массиве можно воспользоваться методом IndexOf класса Array, например:

Этот же результат можно получить и с помощью метода FindIndex всё того же класса Array, например:

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

Многомерный массив
С помощью методов: IndexOf и FindIndex можно найти индекс элемента только в одномерном массиве. В многомерном массиве индекс элемента будет иметь значения вида: array[0, 0] и найти его можно, например, с помощью обычного цикла for.

Если в многомерном массиве будет несколько одинаковых минимальных или максимальных значений, то тогда можно убрать часть, отвечающую за выход из цикла и получить индекс каждого найденного элемента, например:

Jagged массив
В Jagged массиве каждый элемент представляет собой отдельный массив. Чтобы найти индекс самого минимального значения в массиве также воспользуемся циклом for.

Как найти индекс максимального значения?
Всё то же самое, только сначала нужно найти максимальный элемент массива.

В одномерном массиве найти наименьший элемент

В заданном векторе (одномерном массиве) найти: наибольший отрицательный и наименьший положительные элементы
В заданном векторе (одномерном массиве) найти: наибольший отрицательный и наименьший положительные.

Как найти max элемент в двумерном массиве, и как найти min элемент в одномерном массиве?
Не работает программа, ошибки. Вроде понял, как сделать min и max элементы для одномерного массива.

Найти наименьший положительный элемент и его номер в массиве
Дан одномерный массив, который содержит не более 40 положительных и отрицательных целых чисел.

В одномерном массиве [N] найти минимальный по модулю элемент
Пожалуйста помогите кто может!! В одномерном массиве, состоящем из п целочисленных элементов.

Find largest and smallest number in an array

This is my code so far. The problem I am having is with it printing out the biggest number of the array. Something to do with assigning the first element to the highest and lowest value. It works if I do them separately. Any suggestions?

Peter Mortensen's user avatar

5 Answers 5

Unless you really must implement your own solution, you can use std::minmax_element. This returns a pair of iterators, one to the smallest element and one to the largest.

Should be AFTER fill loop

since when you declare array — it’s unintialized (store some undefined values) and so, your big and small after assigning would store undefined values too.

And of course, you can use std::min_element , std::max_element , or std::minmax_element from C++11 , instead of writing your loops.

Martin York's user avatar

You assign to big and small before the array is initialized, i.e., big and small assume the value of whatever is on the stack at this point. As they are just plain value types and no references, they won’t assume a new value once values[0] is written to via cin >>.

Just move the assignment after your first loop and it should be fine.

You can initialize after filling the array or you can write:

integer can hold.

because when you write this line before filling the array, big and small values will equal to a random leftover value (as integer is a POD) from the memory and if those numbers are either bigger or smaller than any other value in you array, you will get them as an output.

Последовательный поиск

Линейный или последовательный поиск – один из самых простых алгоритмов поиска элемента в массиве.

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

Линейный поиск применяется для нахождения:

  • индекса заданного элемента массива;
  • индексов минимального или максимального элемента;
  • минимального или максимального значения в массиве;

Рассмотрим методы расширения, которые реализуют выше перечисленные варианты. Для того, чтобы методы можно было применять к разным типам данных, будем использовать универсальные шаблоны(generics).

Для начала создадим статический класс, в который будем помещать все рассмотренные методы. По скольку не имеет смысла работать с пустым массивом, добавим в класс метод для проверки:

Метод для линейного поиска по значению

Принимает в качестве аргументов массив и искомое значение, а возвращает индекс найденного элемента, или -1 в случае неудачи. Тип данных ограничен структурами для которых реализован интерфейс сравнения IEquatable.

Поиск индекса минимального элемента

Позволяет найти индекс первого наименьшего значения в массиве. Тип входящих аргументов ограничен структурами с реализованным интерфейсом IComparable.

Поиск минимального значения массива

Позволяет найти наименьший элемент в массиве.

Поиск индекса максимального элемента

Позволяет найти позицию первого наибольшего значения.

Поиск максимального значения массива

Позволяет найти наибольший элемент в массиве.

Использование методов для последовательного поиска

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *