发布网友 发布时间:2023-07-19 05:35
共1个回答
热心网友 时间:2024-12-12 12:49
堆排序 堆的定义 n个元素的序列{k k … kn)当且仅当满足以下关系时 称之为堆 若将和序列{k k … kn)对应的一维数组(即以一维数组作此序列的存储结构)看成是一个完全二叉树 则堆的含义表明 完全二叉树中所有非终端结点的值均不大于(或不小于)其左 右孩子结点的值 由此 若序列{k k … kn)是堆 则堆顶元素(或完全二叉树的根)必为序列中n个元素的最小值(或最大值) 这两种堆分别称之为小根堆和大根堆 堆排序(Heap Sort) 对一组待排序的关键字 首先是把它们按堆的定义排列成一个序列(称为初建堆) 这就找到了最大关键字 然后将最大的关键字取出 用剩下的关键字再重建堆 便得到次大关键字 如此反复进行 直到把全部关键字排好序为止 堆排序算法 堆排序的平均时间复杂度接近于O(nlgn) 堆排序是一种不稳定的排序方法 lishixin/Article/program/sjjg/201311/23797