C 中第二大数组元素
查找数组中的第二大值是一个经典的 C 数组程序。此程序让您深入了解迭代、数组和条件运算符。我们迭代检查每个元素以确定最大和次大元素。
算法
让我们首先看看这个程序的分步过程应该是什么 −
开始 步骤 1 → 取一个数组 A 并定义其值 步骤 2 → 将最大和次大声明为整数 步骤 3 → 将数组 A 的前两个值分配给最大和次大 步骤 4 → 将大值分配给最大,将次大值分配给次大 步骤 5 → 对数组 A 进行迭代 步骤 6 → 如果 A[n] >最大,将最大值分配给第二个,并将 A[n] 分配给最大 步骤 7 → 否则,如果 A[n] > 第二个,将 A[n] 分配给第二个 步骤 8 → 循环终止 步骤 9 → 显示最大和第二个 停止
伪代码
现在让我们看看这个算法的伪代码 −
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 Second - %d ", largest, second); return 0; }
输出应如下所示 −
Largest - 101 Second - 69