分割統治アルゴリズムによって、リストから 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)