配列内の2番目に大きい要素を見つける方法


  1. シンプルな方法:

    • 配列をソートします。ソート方法には、昇順または降順のいずれかを使用できます。
    • ソートされた配列の2番目の要素を返します。

    例:

    def find_second_largest(arr):
       arr.sort()
       return arr[-2]
    array = [5, 2, 9, 1, 7]
    second_largest = find_second_largest(array)
    print(second_largest)  # Output: 7
  2. 最適化された方法:

    • 配列を1つずつ走査し、最大値と2番目に大きい値をトラッキングします。
    • 最大値よりも大きい要素が見つかった場合、現在の最大値を2番目に大きい値として更新します。
    • 最終的に2番目に大きい値を返します。

    例:

    def find_second_largest(arr):
       max_value = arr[0]
       second_largest = float('-inf')
       for num in arr:
           if num > max_value:
               second_largest = max_value
               max_value = num
           elif num > second_largest and num != max_value:
               second_largest = num
       return second_largest
    array = [5, 2, 9, 1, 7]
    second_largest = find_second_largest(array)
    print(second_largest)  # Output: 7

このように、配列内の2番目に大きい要素を見つけるためには、ソートや走査を行うことができます。最適化された方法では、配列を1回だけ走査するため、効率的な解決策となります。