python下实现二叉堆以及堆排序
堆是一种特殊的树形结构, 堆中的数据存储满足一定的堆序。堆排序是一种选择排序, 其算法复杂度, 时间复杂度相对于其他的排序算法都有很大的优势。...堆分为大头堆和小头堆, 正如其名, 大头堆的第一个元素是最大的, 每个有子结点的父结点, 其数据值都比其子结点的值要大。小头堆则相反。...我大概讲解下建一个树形堆的算法过程:
找到N/2 位置的数组数据, 从这个位置开始, 找到该节点的左子结点的索引, 先比较这个结点的下的子结点, 找到最大的那个, 将最大的子结点的索引赋值给左子结点,...当然, 我只是大概说了下实现, 在此过程中, 还需要考虑结点不存在的情况。...我这里实现大顶堆, 即第一个元素是最大的,父结点的数据值大于子结点)的第一个元素放到堆尾,随后就是将剩下的结点再重新构成二叉堆(依旧是大顶堆),因此只要递归原二叉堆实现过程就行。