0

分割統治アルゴリズムによって、リストから 2 番目に大きい数と最大の数を見つけなければなりません。問題は、a や b などのインデックスを使用する部分を除いて、すべてが正しいことです。動作が速いからです。コストが安い。コードを書き直したり、他のコードやアプローチを送信したりする必要はありません。できれば修正してください。どんなアイデアでも歓迎します。ありがとう

#!/usr/local/bin/python2.7

def two_max(arr,a,b):
      n = len(arr)
      if n==2: 
          if arr[0]<arr[1]: 
             return (arr[1], arr[0])
          else:
             return (arr[0], arr[1])

      (greatest_left, sec_greatest_left) = two_max(arr,a (a+b)/2)
      (greatest_right, sec_greatest_right) = two_max(arr,(a+b)/2,b)
      if greatest_left < greatest_right: 
          greatest = greatest_right
          if greatest_left < sec_greatest_left: 
              return (greatest, sec_greatest_left)
          else:
              return (greatest, greatest_left)
      else:
          greatest = greatest_left
          if greatest_right < sec_greatest_right: # Line 4
              return (greatest, sec_greatest_right)
          else:
              return (greatest, greatest_right) 
4

3 に答える 3