Why doesn't my heapify work?

Ruan ruan at jcmills.com
Wed Feb 7 13:10:29 EST 2007


Can't range go from larger to smaller?


"Diez B. Roggisch" <deets at nospam.web.de> wrote in message 
news:52uiomF1olkevU1 at mid.uni-berlin.de...
> Dongsheng Ruan wrote:
>
>> I want to turn an Array into a heap, but my code just doesn't work: no
>> change after execution.
>>
>> A=[3,5,4,9,6,7]
>> m=len(A)-1
>>
>>
>>
>> for i in range(m,1):
>>     t=(i-1)/2
>>     if A[i]>A[t]:
>>         A[i],A[t]=A[t],A[i]
>
> First of all, there is the module heapq that will just do it.
>
> And then you seem to misunderstand how the range-function works. range(m, 
> 1)
> will always be the empty list. See
>
> pydoc range
>
> for how it operates.
>
> Overall, your code is very unpythonic, to say the least. I suggest you 
> start
> reading the python tutorial first:
>
> http://docs.python.org/tut/
>
> Especially the looping techniques section:
>
> http://docs.python.org/tut/node7.html#SECTION007600000000000000000
>
> Diez 





More information about the Python-list mailing list