举个例子说明一下堆排序
时间: 2024-06-20 15:02:31 浏览: 141
堆排序实例
堆排序是一种基于比较的排序算法,它利用了二叉堆的数据结构来进行操作。堆是一个完全二叉树,其中每个父节点的值都大于或等于(对于最大堆)或小于或等于(对于最小堆)其子节点的值。堆排序分为两个主要步骤:建堆和调整堆。
1. 建堆:首先,将待排序的数组构建成一个最大堆。这通常从最后一个非叶子节点开始,逐层向上调整,确保每个节点都满足堆的性质。
2. 调整堆:然后,将堆顶元素(即当前最大或最小元素)与末尾元素交换,这样就得到了有序序列。接着,将剩余的元素重新调整为堆,然后再次将堆顶元素与末尾元素交换,如此循环,直到整个序列有序。
举个例子,假设我们有一个无序数组 [8, 3, 6, 1, 5, 2, 7, 4]:
- 首先,我们建立最大堆:[8, 3, 6, 1, 5, 2, 7, 4]
- 将堆顶(8)与末尾(4)交换,得到 [4, 3, 6, 1, 5, 2, 7, 8]
- 对剩余7个元素重新调整成最大堆:[4, 5, 1, 3, 2, 7, 6, 8]
- 再次交换:[4, 1, 3, 2, 5, 7, 6, 8]
- ...重复此过程,直到整个序列有序。
阅读全文