Поиск двух максимальных элементов в одномерном массиве - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Имеется целочисленный одномерный массив. Нужно найти 2 максимальных элемента в массиве и вывести их номера. Решил проходить двумя циклами. При первом проходе -- поиск 1-го максимального. При втором -- соответственно, 2-го максимального, причем без учета 1-го максимального.
max1=A[1];
max2=A[1];
for (i=1; i<=N; i++) {
   if (A[i]>=max1) {
      max1=A[i];
      max1_num=i;
   }
}
for (i=1; i<=N; i++) {
   if (i!=max1_num) {
      if (A[i]>=max2) {
         max2=A[i];
         max2_num=i;
      }
   }
}
printf("%d с номером [%d]\n%d с номером [%d]\n", max1, max1_num, max2, max2_num);
Однако, если массив будет, например,

5 4 3 2 1

, то выводит только 1-й элемент. В общем, работает во всех случаях, кроме того, когда 1-й максимальный элемент стоит на 1-м месте. Спасибо!

Решение задачи: «Поиск двух максимальных элементов в одномерном массиве»

textual
Листинг программы
#include <u.h>
#include <libc.h>
 
void
main(void)
{
    int i, i1, i2, n;
    int v[] = {5, 4, 3, 2, 1};
    n = sizeof(v) / sizeof(int);
 
    if (v[0] > v[1]) {
        i1 = 0;
        i2 = 1;
    } else {
        i1 = 1;
        i2 = 0;
    }
 
    for (i = 2; i < n; i++)
        if (v[i] > v[i1]) {
            i2 = i1;
            i1 = i;
        } else if (v[i] > v[i2])
            i2 = i;
 
    print("[%d] = %d\n[%d] = %d\n", i1, v[i1], i2, v[i2]);
    exits(0);
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы
  2. Определяем функцию main()
  3. Инициализируем переменные i, i1, i2, n
  4. Определяем массив v
  5. Вычисляем размер массива n
  6. Сравниваем первый и второй элементы массива v и меняем значения i1 и i2 если необходимо
  7. Проходим по массиву от 3-го элемента до последнего и находим максимальные элементы, записывая их в i1 и i2
  8. Выводим на экран значения i1 и i2
  9. Завершаем программу

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5
Похожие ответы