查詢 C 陣列中的第二大元素



查詢陣列中的第二大值是經典的 C 語言陣列程式。該程式使你深入瞭解迭代、陣列和條件運算子。我們迭代地檢查每個元素,以確定最大和第二大元素。

演算法

首先,我們來看看該程式的分步過程 -

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

虛擬碼

現在,我們來看看該演算法的虛擬碼 -

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

實現

現在,可以在 C 語言程式中實現該虛擬碼,如下所示 -

#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;
}

輸出應該如下所示 -

Largest - 101
Second - 69
array_examples_in_c.htm
廣告
© . All rights reserved.