堆排序——C语言

关于堆不做过多解释(要说的话有点多....)要学堆排序的话对堆肯定有一定的理解。 首先从堆顶开始,自左向右依次标号的话(0..n),我们可以发现父子节点的关系 (首标为0时)i为父;则左子为2i+1;右子为2i+2; 要实现堆排序, 1:将无序堆变成有序。 2:堆顶元素与堆尾元素交换后,去掉堆尾(此时堆尾最大或者最小,不需要再调整),调整剩下的(因为前面交换首尾,所以堆得有序结构改变了,需要重新调
相关文章
相关标签/搜索