首先将待排序的数组构造成一个大根堆,此时,整个数组的最大值就是堆结构的顶端。将顶端的数与末尾的数交换,此时,末尾的数为最大值,剩余待排序数组个数为n-1。将剩余的n-1个数再构造成大根堆,再将顶端数与n-1位置的数交换,如此反复执行,便能得到有序数组。
堆排序利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
时间: 2024-11-10 15:30:31
首先将待排序的数组构造成一个大根堆,此时,整个数组的最大值就是堆结构的顶端。将顶端的数与末尾的数交换,此时,末尾的数为最大值,剩余待排序数组个数为n-1。将剩余的n-1个数再构造成大根堆,再将顶端数与n-1位置的数交换,如此反复执行,便能得到有序数组。
堆排序利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。