Java实现堆
由于完全二叉树的性质,我们可以将堆的节点按照从上到下、从左到右的顺序对应到数组中。假设堆的根节点在数组中的下标为0,则其左孩子的下标为2i+1,右孩子的下标为2i+2,父节点的下标为(i-1)/2。而在小根堆中,每个节点的值都小于或等于其子节点的值。对于一个包含n个元素的数组,建立堆的时间复杂度为O(n),堆排序的时间复杂度为O(nlogn)。上述代码实现了一个最大堆,堆的大小为数组的长度。堆排序的思路与普通的堆排序一致,先建立堆,然后每次将堆顶元素与堆底元素交换,缩小堆的大小,并重新堆化。
原创
2023-11-30 20:34:39 ·
435 阅读 ·
0 评论