#! /usr/local/bin/pyhton# -*- coding:utf-8 -*-# To maintain heap condition# input A:array, i:node numberdef max_heapify(A,i):l=2*i+1r=2*i+2if l<len(A) and A[l]>A[i]:largest=lelse:largest=iif r<len(A) and A[r]>A[largest]:largest=rif largest!=i:A[largest],A[i]=A[i],A[largest]max_heapify(A,largest)# To build heap structuredef build_max_heap(A):i=len(A)/2while i>=0:max_heapify(A,i)i-=1# Do heapsortdef heapsort(A):result=[]build_max_heap(A)while len(A)>1:result.append(A[0])tmp=A[1:len(A)-1]A=A[len(A)-1:]A=A+tmpbuild_max_heap(A)return result
使い方はheapsortにソートしたいリストAを渡すだけ.返り値でソート済みのリストが返ってくる
コードはhttps://github.com/fukkyy/python-algorithm/blob/master/heap_sort.pyにおいてます
0 件のコメント:
コメントを投稿