私はヒープを(実生活とPythonで)発見したばかりで、乱数の特定のリストがヒープ順であるかどうかを判断しようとしています。
問題は、提供された定義が理にかなっていると信じていても、実際に「ヒープ」を実際に理解しているかどうかはわかりません。
ヒープ疑似コードを作成するのに役立つ練習問題をいくつか見つけました。これが問題であり、以下はそれを解決しようとする私の試みです:
数値のリストがヒープかどうかをチェックする関数を書きます:
リストを指定すると、数字がヒープ順であれば True を返し、そうでない場合は False を返し、プログラムに答えを返して出力させます。
例:
- True を返します: 次のリストはヒープ順です: [0,1, 10, 2, 3, 11, 12, 4, 5, 19, 15]
- False を返します 次のリストはヒープ順ではありません: [0, 1, 10, 2, 15, 11, 12, 4, 5, 19, 3]
次に、1 から 100 までの乱数の束を含む 2 つのリストがあり、いくつかの繰り返しがありました。
def heap_or(A):
n = len(A)
for i in range(n):
start = (len(A) - 2) / 2
while start >= 0:
siftDown(A, start, len(A) - 1)
start -= 1:
return 'True'
else:
return 'False'
def siftDown(A, start, end):
root = start
while root * 2 + 1 <= end:
number = root * 2 + 1
if number + 1 <= end and A[number] < A[number + 1]:
number += 1
if number <= end and A[root] < A[number]:
A[root], A[number] = A[number], A[root]
root = number
else:
return
print
誰か手を貸してくれませんか?ヒープを正しく定義しているかどうかよくわからないため、コードも苦労しています。