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

Задача. Дан массив целых чисел. Написать программу поиска в нем минимального и максимального значений.

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

Алгоритм решения:

  1. Введем переменные для хранения минимального и максимального значений и присвоим их значение первого элемента массива.
  2. Начиная со второго (его индекс 1), будем в цикле перебирать все элементы массива.
  3. Если значение очередного элемента меньше хранимого в соответствующей переменной, то перезапишем ее значение.
  4. Иначе, если значение текущего элемента больше значения переменной для хранения максимума, сохраним в переменной это новое значение.
  5. Выведем значения переменных на экран.

Решение задачи на языке программирования C:

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

#include <stdio.h>

int main() {
    int a[] = {12, -34, 18, 4, -3, 15, 0, -10, 3, 17};

    int min = a[0];
    int max = a[0];

    for (int i = 1; i < sizeof(a)/sizeof(a[0]); i++) {
        if (a[i] < min)
            min = a[i];
        else if (a[i] > max)
            max = a[i];
    }

    printf("Min: %d \n", min);
    printf("Max: %d \n", max);
}

Результат выполнения:

Min: -34
Max: 18

Решение для поиска индексов, вывода индексов и значений:

#include <stdio.h>

int main() {
    int a[] = {12, 18, 4, -3, 15, -34, 0, -10, 3, 17};

    int min = 0;
    int max = 0;

    for (int i = 1; i < sizeof(a)/sizeof(a[0]); i++) {
        if (a[i] < a[min])
            min = i;
        else if (a[i] > a[max])
            max = i;
    }

    printf("ID min: %d, value min: %d \n", min, a[min]);
    printf("ID max: %d, value max: %d \n", max, a[max]);
}
ID min: 5, value min: -34
ID max: 1, value max: 18