堆排序每一趟排序结果,请给出具体事例
时间: 2023-07-28 13:20:25 浏览: 184
假设我们要对数组 [5, 3, 8, 4, 2] 进行堆排序。下面是堆排序的每一趟排序的具体过程和结果:
第一趟排序:
1. 建堆:将原始数组构建成一个大根堆,得到堆 [8, 4, 5, 3, 2];
2. 交换:将堆顶元素 8 和末尾元素 2 进行交换,得到数组 [2, 4, 5, 3, 8];
3. 调整:将除了末尾元素 8 之外的剩余元素 [2, 4, 5, 3] 构建成一个大根堆,得到堆 [5, 4, 2, 3]。
第二趟排序:
1. 建堆:将除了末尾元素 8 之外的剩余元素 [2, 4, 5, 3] 构建成一个大根堆,得到堆 [5, 4, 2, 3];
2. 交换:将堆顶元素 5 和末尾元素 3 进行交换,得到数组 [3, 4, 2, 5, 8];
3. 调整:将除了末尾元素 8 之外的剩余元素 [3, 4, 2, 5] 构建成一个大根堆,得到堆 [4, 3, 2, 5]。
第三趟排序:
1. 建堆:将除了末尾元素 8 之外的剩余元素 [3, 4, 2, 5] 构建成一个大根堆,得到堆 [5, 4, 2, 3];
2. 交换:将堆顶元素 5 和末尾元素 5 进行交换,得到数组 [2, 4, 3, 5, 8];
3. 调整:将除了末尾元素 8 之外的剩余元素 [2, 4, 3, 5] 构建成一个大根堆,得到堆 [4, 2, 3, 5]。
第四趟排序:
1. 建堆:将除了末尾元素 8 之外的剩余元素 [2, 4, 3, 5] 构建成一个大根堆,得到堆 [5, 4, 3, 2];
2. 交换:将堆顶元素 5 和末尾元素 8 进行交换,得到数组 [2, 4, 3, 8, 5];
3. 调整:将除了末尾元素 5 之外的剩余元素 [2, 4, 3, 8] 构建成一个大根堆,得到堆 [4, 2, 3, 8]。
第五趟排序:
1. 建堆:将除了末尾元素 5 之外的剩余元素 [2, 4, 3, 8] 构建成一个大根堆,得到堆 [8, 4, 3, 2];
2. 交换:将堆顶元素 8 和末尾元素 5 进行交换,得到数组 [2, 4, 3, 5, 8];
3. 调整:将除了末尾元素 8 之外的剩余元素 [2, 4, 3, 5] 构建成一个大根堆,得到堆 [4, 2, 3, 5]。
最终得到的有序数组是 [2, 3, 4, 5, 8]。
阅读全文