专题文章
时长:00:00更新时间:2020-11-27 14:22:43
堆是一种特殊的树形结构,堆中的数据存储满足一定的堆序。堆排序是一种选择排序,其算法复杂度,时间复杂度相对于其他的排序算法都有很大的优势。堆分为大头堆和小头堆,正如其名,大头堆的第一个元素是最大的,每个有子结点的父结点,其数据值都比其子结点的值要大。小头堆则相反。我大概讲解下建一个树形堆的算法过程。找到N/2 位置的数组数据,从这个位置开始,找到该节点的左子结点的索引,先比较这个结点的下的子结点,找到最大的那个,将最大的子结点的索引赋值给左子结点,然后将最大的子结点和父结点进行对比,如果比父结点大,与父节点交换数据。当然,我只是大概说了下实现,在此过程中,还需要考虑结点不存在的情况。看下代码。
查看详情