堆排序算法是一种选择排序,主要思想是选好一个非叶子节点子树,然后用该子树较大的孩子跟父节点比较,较大者跟父节点交换。如果交换后,孩子节点不满足大根堆排序,则交换依次后,用交换的孩子作为根节点,对该孩子进行大根堆排序,直到所有孩子节点全部满足大根堆排序,然后才继续往上一层节点继续比较排序;
下图是对大根堆排序原理图文动态讲解,引用这篇博主(https://blog.csdn.net/LoveHYZH/article/details/86748132#422__165)的图。
一、大根堆排序原理
大根堆排序的原理如下
1.1先从最后一个非叶子节点的子树开始,从该子节点数依次从右到左,然后从下到上进行大根堆排序。
1.2先写最后一个非叶子节点的子树大根堆第一遍排序,然后再排列子树的孩纸也要进行大根堆排序;
1.3最后,用一个for循环,依次找到最后一个非叶子节点的子树的根节点,从左到右,从下到上,循环对子树进行大根堆排序。