我剛剛發現堆(現實生活中和Python),現在我試圖確定某個隨機數列表是否按堆順序排列。
問題是我不確定自己是否真的瞭解實踐中的「堆」,即使我相信提供的定義是合理的。確定一個數字列表是否是堆棧順序,Python 3.2
我發現了一些練習問題,應該可以幫助您編寫堆僞代碼。 這是問題,下面是我嘗試在解決它:
編寫檢查號碼列表是否是堆或不是一個函數:
給出一個列表,這數字是否返回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]
然後有2只列出了一堆的隨機數字從1 - 100扔進去,還有一些重複。
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
有人能請我幫忙嗎?因爲我不確定我是否正確地定義了堆,所以代碼也給我一個困難!
我們可以給你一個手,但你應該包括你的'siftDown'的實現 – jamylak 2013-05-07 08:35:45
@jamylak我幾乎肯定這是不正確的,因爲我試圖建模我的人後,別人的堆最小/最大排序,但我無論如何,現在將它添加到我的原始帖子! – user2227808 2013-05-07 08:40:17
@jamylak - 你認爲你現在能夠幫助我嗎? – user2227808 2013-05-07 11:01:54