Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork810
Open
Description
def_siftdown(self,ndx):left=2*ndx+1right=2*ndx+2# determine which node contains the larger valuelargest=ndxif (left<self._countand# 有左孩子self._elements[left]>=self._elements[largest]andself._elements[left]>=self._elements[right]):# 原书这个地方没写实际上找的未必是largestlargest=leftelifright<self._countandself._elements[right]>=self._elements[largest]:largest=rightiflargest!=ndx:self._elements[ndx],self._elements[largest]=self._elements[largest],self._elements[ndx]self._siftdown(largest)
若self.elements = [4,3,2,1,0]这种结构的话,这种会报错,是否应该先判断右孩子是否存在,然后再判断左孩子?
def_siftdown(self,ndx):left=2*ndx+1right=2*ndx+2# determine which node contains the larger valuelargest=ndxif (right<self._countand# 有右孩子self._elements[right]>=self._elements[largest]andself._elements[left]<=self._elements[right]):# 原书这个地方没写实际上找的未必是largestlargest=rightelifleft<self._countandself._elements[left]>=self._elements[largest]:largest=leftiflargest!=ndx:self._elements[ndx],self._elements[largest]=self._elements[largest],self._elements[ndx]self._siftdown(largest)
Metadata
Metadata
Assignees
Labels
No labels