本文将从相关预备知识、堆排序步骤、总结三方面阐述堆排序。
认真阅读,理解大约只需要5min
一、预备知识
堆:一种树形序列,所有的堆都必须符合两个条件:
(1)完全二叉树(2)父节点总是小于或大于子节点。
图形表达和数字表达的转换:图一也写成12-8-10-6-4-7-9,图二也写成2-6-6-6-4-7-9
二、堆排序步骤:
(1)升序进行堆排序:(第一轮)不断调换相邻节点位置,直到父节点总是大于子节点。达成目的后,将首尾元素位置调换,尾元素位置固定不再参与位置调换,剩余n-1个元素继续进行排序。(第二轮)……不断重复,直到所有元素位置固定,完成堆排序,此时可以将图形表达切换回数字表达即为当前序列。
(2)降序进行堆排序:与(1)相比,除了将”父节点总是大于子节点“中的”大于“改为”小于“,其它排序方法完全一致。
实例:
原序列: 7-6-3-5-4-1-2
要求:按照升序进行堆排序,求第一轮排序后的结果
实例解答:画成树状图后发现此时该二叉树已经