私は、Leetcode 217. Contains Duplicateのヒープソートプログラムを、Pythonの組み込みソートメソッドを使うのではなく、以下のように書くことを試みました。 Leetcodeはヒープソート方法を受け入れるべきですが、私のヒープソートプログラムはうまく動作しますが、何らかの理由でLeetcodeから実行時の拒否が得られます。誰も助けることができますか?解決ヒープソートについてPythonコードを改善するにはどうすればよいですか?
、コードの下にヒープを初期化するために、フロイドのアルゴリズムを使用して再編集され、Leetcode
def heapsort(nums):
def swap(i, j):
nums[i], nums[j] = nums[j], nums[i]
def sift(start, size):
l = (start << 1) + 1 # Do not forget() for <<
r = l + 1
largest = start
if l <= size - 1 and nums[start] < nums[l]:
largest = l
if r <= size - 1 and nums[largest] < nums[r]:
largest = r
if largest != start:
swap(start, largest)
sift(largest, size)
size = len(nums)
# Initialize heap (Floyd Algorithm)
end = (size >> 1) - 1
while end >= 0:
sift(end, size)
end -= 1
swap(0, size - 1)
size -= 1
# Heapify recursively
while size > 1:
sift(0, size)
swap(0, size - 1)
size -= 1
これはcodereview – naomik
に属します。申し訳ありませんが、コーダービューは何ですか? Stackoverflowのモジュールまたは何ですか?@naomik – Nicholas
申し訳ありませんが、私はリンクする必要があります。 http://codereview.stackexchange.com/ – naomik