最近自己动手实现了各种排序算法,有冒泡、插入、快速排序、二叉树排序等等,觉得快速排序的效率(对于一般的乱序而言)的确无可匹敌。当然,堆排序也很酷。不过前几个使用c#实现的,而堆排序是用python实现的,没办法做benchmark了。今后几天陆续贴出来,供大家参看。
堆排序的算法请参考:http://baike.baidu.com/view/157305.htm
其中,createHeap()能够将一个list创建成堆(最大值在最上),而它是基于insertIntoHeap()的,后者的原理是把一个值插入到一个堆中。还有一个重要的函数是topDownHeap(), 这是堆排序的关键一步,将位于堆队列最后的元素,放置到堆顶,然后通过向左右分支做比较,将其沉降到一个合适位置。最后,还有一个辅助功能printHeap(),它能将一个堆队列,以树状打印出来。