Deuxième plus grand élément de tableau en C

Trouver la deuxième plus grande valeur dans un tableau est un programme de tableau C classique. Ce programme vous donne un aperçu des opérateurs d'itération, de tableau et conditionnels. Nous vérifions itérativement chaque élément pour déterminer le plus grand et le deuxième élément le plus grand.

Algorithme

Voyons d'abord quelle devrait être la procédure étape par étape de ce programme -

START
   Step 1 → Take an array A and define its values
   Step 2 → Declare largest and second as integer
   Step 3 → Assign first two values of array A to largest and second
   Step 4 → Assign the large value to largest and second largest to second
   Step 5 → Iterate for Array A
   Step 6 → If A[n] > largest, Assign largest.value to second and Assign A[n] to largest
   Step 7 → Else If A[n] > second, Assign A[n] to second
   Step 8 → Loop Terminates
   Step 9 → Display largest and second
STOP

Pseudocode

Voyons maintenant le pseudocode de cet algorithme -

procedure largest_array(A)

   Declare largest and second as integer

   IF A[0] is greater than A[1] THEN 
      largest ← A[0]
      second ← A[1]
   ELSE
      largest ← A[1]
      second ← A[0]
   ENDIF

   FOR EACH value in A DO
      IF A[n] is greater than largest THEN
         second ← largest
         largest ← A[n]
      ELSE IF second is less than A[n] THEN
         second ← A[n]
      END IF

   END FOR
   Display largest and second

end procedure

la mise en oeuvre

Ce pseudocode peut maintenant être implémenté dans le programme C comme suit -

#include <stdio.h>

int main() {
   int array[10] = {101, 11, 3, 4, 50, 69, 7, 8, 9, 0};
   int loop, largest, second;

   if(array[0] > array[1]) {
      largest = array[0];
      second  = array[1];
   } else {
      largest = array[1];
      second  = array[0];
   }

   for(loop = 2; loop < 10; loop++) {
      if( largest < array[loop] ) {
         second = largest;
         largest = array[loop];
      } else if( second < array[loop] ) {
         second =  array[loop];
      }
   }

   printf("Largest - %d \nSecond - %d \n", largest, second);   

   return 0;
}

La sortie devrait ressembler à ceci -

Largest - 101
Second - 69