public class MinHeap extends Heap<Integer> {
@Override
public int compareTo(Integer firstElement, Integer secondElement) {
return firstElement.compareTo(secondElement);
}
}
17:21:30.053 [main] INFO queue.PriorityQueue - 元素:3 当前队列:[1,null,null,null,null,null,null,null,null,null,null] 17:21:30.055 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:1 parent:0 17:21:30.056 [main] INFO queue.PriorityQueue - 值比对,父节点:1 目标节点:3 17:21:30.056 [main] INFO queue.PriorityQueue - 完成 Idx:1 Val:3 当前队列:[1,3,null,null,null,null,null,null,null,null,null]
17:21:30.056 [main] INFO queue.PriorityQueue - 元素:5 当前队列:[1,3,null,null,null,null,null,null,null,null,null] 17:21:30.056 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:2 parent:0 17:21:30.056 [main] INFO queue.PriorityQueue - 值比对,父节点:1 目标节点:5 17:21:30.056 [main] INFO queue.PriorityQueue - 完成 Idx:2 Val:5 当前队列:[1,3,5,null,null,null,null,null,null,null,null]
17:21:30.056 [main] INFO queue.PriorityQueue - 元素:11 当前队列:[1,3,5,null,null,null,null,null,null,null,null] 17:21:30.056 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:3 parent:1 17:21:30.056 [main] INFO queue.PriorityQueue - 值比对,父节点:3 目标节点:11 17:21:30.056 [main] INFO queue.PriorityQueue - 完成 Idx:3 Val:11 当前队列:[1,3,5,11,null,null,null,null,null,null,null]
17:21:30.056 [main] INFO queue.PriorityQueue - 元素:4 当前队列:[1,3,5,11,null,null,null,null,null,null,null] 17:21:30.056 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:4 parent:1 17:21:30.056 [main] INFO queue.PriorityQueue - 值比对,父节点:3 目标节点:4 17:21:30.056 [main] INFO queue.PriorityQueue - 完成 Idx:4 Val:4 当前队列:[1,3,5,11,4,null,null,null,null,null,null]
17:21:30.056 [main] INFO queue.PriorityQueue - 元素:6 当前队列:[1,3,5,11,4,null,null,null,null,null,null] 17:21:30.056 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:5 parent:2 17:21:30.056 [main] INFO queue.PriorityQueue - 值比对,父节点:5 目标节点:6 17:21:30.056 [main] INFO queue.PriorityQueue - 完成 Idx:5 Val:6 当前队列:[1,3,5,11,4,6,null,null,null,null,null]
17:21:30.056 [main] INFO queue.PriorityQueue - 元素:7 当前队列:[1,3,5,11,4,6,null,null,null,null,null] 17:21:30.056 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:6 parent:2 17:21:30.056 [main] INFO queue.PriorityQueue - 值比对,父节点:5 目标节点:7 17:21:30.056 [main] INFO queue.PriorityQueue - 完成 Idx:6 Val:7 当前队列:[1,3,5,11,4,6,7,null,null,null,null]17:21:30.056 [main] INFO queue.PriorityQueue - 元素:12 当前队列:[1,3,5,11,4,6,7,null,null,null,null] 17:21:30.056 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:7 parent:3 17:21:30.056 [main] INFO queue.PriorityQueue - 值比对,父节点:11 目标节点:12 17:21:30.056 [main] INFO queue.PriorityQueue - 完成 Idx:7 Val:12 当前队列:[1,3,5,11,4,6,7,12,null,null,null]
17:21:30.056 [main] INFO queue.PriorityQueue - 元素:15 当前队列:[1,3,5,11,4,6,7,12,null,null,null] 17:21:30.056 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:8 parent:3 17:21:30.056 [main] INFO queue.PriorityQueue - 值比对,父节点:11 目标节点:15 17:21:30.057 [main] INFO queue.PriorityQueue - 完成 Idx:8 Val:15 当前队列:[1,3,5,11,4,6,7,12,15,null,null]
17:21:30.057 [main] INFO queue.PriorityQueue - 元素:10 当前队列:[1,3,5,11,4,6,7,12,15,null,null] 17:21:30.057 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:9 parent:4 17:21:30.057 [main] INFO queue.PriorityQueue - 值比对,父节点:4 目标节点:10 17:21:30.057 [main] INFO queue.PriorityQueue - 完成 Idx:9 Val:10 当前队列:[1,3,5,11,4,6,7,12,15,10,null]
17:21:30.057 [main] INFO queue.PriorityQueue - 元素:9 当前队列:[1,3,5,11,4,6,7,12,15,10,null] 17:21:30.057 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:10 parent:4 17:21:30.057 [main] INFO queue.PriorityQueue - 值比对,父节点:4 目标节点:9 17:21:30.057 [main] INFO queue.PriorityQueue - 完成 Idx:10 Val:9 当前队列:[1,3,5,11,4,6,7,12,15,10,9]
17:21:30.057 [main] INFO queue.PriorityQueue - 元素:8 当前队列:[1,3,5,11,4,6,7,12,15,10,9,null,null,null,null,null,null,null,null,null,null,null,null,null] 17:21:30.057 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:11 parent:5 17:21:30.057 [main] INFO queue.PriorityQueue - 值比对,父节点:6 目标节点:8 17:21:30.057 [main] INFO queue.PriorityQueue - 完成 Idx:11 Val:8 当前队列:[1,3,5,11,4,6,7,12,15,10,9,8,null,null,null,null,null,null,null,null,null,null,null,null]
17:21:30.057 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:1 下节点:3 位置替换 17:21:30.057 [main] INFO queue.PriorityQueue - 左右子节点比对,获取最小值。left:11 right:4 17:21:30.057 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:3 下节点:4 位置替换 17:21:30.057 [main] INFO queue.PriorityQueue - 左右子节点比对,获取最小值。left:10 right:9 17:21:30.057 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:4 Val:8 17:21:30.057 [main] INFO heap.__test__.HeapTest - 测试结果:1 17:21:30.057 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:3 下节点:4 位置替换 17:21:30.057 [main] INFO queue.PriorityQueue - 左右子节点比对,获取最小值。left:11 right:8 17:21:30.057 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:4 下节点:8 位置替换 17:21:30.057 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:4 Val:9 17:21:30.057 [main] INFO heap.__test__.HeapTest - 测试结果:3 17:21:30.057 [main] INFO queue.PriorityQueue - 左右子节点比对,获取最小值。left:8 right:5 17:21:30.057 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:4 下节点:5 位置替换 17:21:30.057 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:5 下节点:6 位置替换 17:21:30.057 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:5 Val:10 17:21:30.057 [main] INFO heap.__test__.HeapTest - 测试结果:4 17:21:30.057 [main] INFO queue.PriorityQueue - 左右子节点比对,获取最小值。left:8 right:6 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:5 下节点:6 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 左右子节点比对,获取最小值。left:10 right:7 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:6 下节点:7 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:6 Val:15 17:21:30.058 [main] INFO heap.__test__.HeapTest - 测试结果:5 17:21:30.058 [main] INFO queue.PriorityQueue - 左右子节点比对,获取最小值。left:8 right:7 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:6 下节点:7 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:7 下节点:10 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:5 Val:12 17:21:30.058 [main] INFO heap.__test__.HeapTest - 测试结果:6 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:7 下节点:8 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 左右子节点比对,获取最小值。left:11 right:9 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:8 下节点:9 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:4 Val:15 17:21:30.058 [main] INFO heap.__test__.HeapTest - 测试结果:7 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:8 下节点:9 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:9 下节点:11 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:3 Val:12 17:21:30.058 [main] INFO heap.__test__.HeapTest - 测试结果:8 17:21:30.058 [main] INFO queue.PriorityQueue - 左右子节点比对,获取最小值。left:11 right:10 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:9 下节点:10 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:2 Val:15 17:21:30.058 [main] INFO heap.__test__.HeapTest - 测试结果:9 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:10 下节点:11 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:1 Val:12 17:21:30.058 [main] INFO heap.__test__.HeapTest - 测试结果:10 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:11 下节点:12 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:1 Val:15 17:21:30.058 [main] INFO heap.__test__.HeapTest - 测试结果:11 17:21:30.058 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:0 Val:15 17:21:30.058 [main] INFO heap.__test__.HeapTest - 测试结果:12 17:21:30.058 [main] INFO heap.__test__.HeapTest - 测试结果:15
Process finished with exit code 0 小堆就是一个正序的输出结果,从小到大的排序和输出。 小堆空间:[1,3,5,11,4,6,7,12,15,10,9,8,null,null,null,null,null,null,null,null,null,null,null,null]
public class MaxHeap extends Heap<Integer> {
@Override
public int compareTo(Integer firstElement, Integer secondElement) {
return secondElement.compareTo(firstElement);
}
}
public class MinHeap extends Heap<Integer> {
@Override
public int compareTo(Integer firstElement, Integer secondElement) {
return firstElement.compareTo(secondElement);
}
}
17:21:30.053 [main] INFO queue.PriorityQueue - 元素:3 当前队列:[1,null,null,null,null,null,null,null,null,null,null] 17:21:30.055 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:1 parent:0 17:21:30.056 [main] INFO queue.PriorityQueue - 值比对,父节点:1 目标节点:3 17:21:30.056 [main] INFO queue.PriorityQueue - 完成 Idx:1 Val:3 当前队列:[1,3,null,null,null,null,null,null,null,null,null]
17:21:30.056 [main] INFO queue.PriorityQueue - 元素:5 当前队列:[1,3,null,null,null,null,null,null,null,null,null] 17:21:30.056 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:2 parent:0 17:21:30.056 [main] INFO queue.PriorityQueue - 值比对,父节点:1 目标节点:5 17:21:30.056 [main] INFO queue.PriorityQueue - 完成 Idx:2 Val:5 当前队列:[1,3,5,null,null,null,null,null,null,null,null]
17:21:30.056 [main] INFO queue.PriorityQueue - 元素:11 当前队列:[1,3,5,null,null,null,null,null,null,null,null] 17:21:30.056 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:3 parent:1 17:21:30.056 [main] INFO queue.PriorityQueue - 值比对,父节点:3 目标节点:11 17:21:30.056 [main] INFO queue.PriorityQueue - 完成 Idx:3 Val:11 当前队列:[1,3,5,11,null,null,null,null,null,null,null]
17:21:30.056 [main] INFO queue.PriorityQueue - 元素:4 当前队列:[1,3,5,11,null,null,null,null,null,null,null] 17:21:30.056 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:4 parent:1 17:21:30.056 [main] INFO queue.PriorityQueue - 值比对,父节点:3 目标节点:4 17:21:30.056 [main] INFO queue.PriorityQueue - 完成 Idx:4 Val:4 当前队列:[1,3,5,11,4,null,null,null,null,null,null]
17:21:30.056 [main] INFO queue.PriorityQueue - 元素:6 当前队列:[1,3,5,11,4,null,null,null,null,null,null] 17:21:30.056 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:5 parent:2 17:21:30.056 [main] INFO queue.PriorityQueue - 值比对,父节点:5 目标节点:6 17:21:30.056 [main] INFO queue.PriorityQueue - 完成 Idx:5 Val:6 当前队列:[1,3,5,11,4,6,null,null,null,null,null]
17:21:30.056 [main] INFO queue.PriorityQueue - 元素:7 当前队列:[1,3,5,11,4,6,null,null,null,null,null] 17:21:30.056 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:6 parent:2 17:21:30.056 [main] INFO queue.PriorityQueue - 值比对,父节点:5 目标节点:7 17:21:30.056 [main] INFO queue.PriorityQueue - 完成 Idx:6 Val:7 当前队列:[1,3,5,11,4,6,7,null,null,null,null]17:21:30.056 [main] INFO queue.PriorityQueue - 元素:12 当前队列:[1,3,5,11,4,6,7,null,null,null,null] 17:21:30.056 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:7 parent:3 17:21:30.056 [main] INFO queue.PriorityQueue - 值比对,父节点:11 目标节点:12 17:21:30.056 [main] INFO queue.PriorityQueue - 完成 Idx:7 Val:12 当前队列:[1,3,5,11,4,6,7,12,null,null,null]
17:21:30.056 [main] INFO queue.PriorityQueue - 元素:15 当前队列:[1,3,5,11,4,6,7,12,null,null,null] 17:21:30.056 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:8 parent:3 17:21:30.056 [main] INFO queue.PriorityQueue - 值比对,父节点:11 目标节点:15 17:21:30.057 [main] INFO queue.PriorityQueue - 完成 Idx:8 Val:15 当前队列:[1,3,5,11,4,6,7,12,15,null,null]
17:21:30.057 [main] INFO queue.PriorityQueue - 元素:10 当前队列:[1,3,5,11,4,6,7,12,15,null,null] 17:21:30.057 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:9 parent:4 17:21:30.057 [main] INFO queue.PriorityQueue - 值比对,父节点:4 目标节点:10 17:21:30.057 [main] INFO queue.PriorityQueue - 完成 Idx:9 Val:10 当前队列:[1,3,5,11,4,6,7,12,15,10,null]
17:21:30.057 [main] INFO queue.PriorityQueue - 元素:9 当前队列:[1,3,5,11,4,6,7,12,15,10,null] 17:21:30.057 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:10 parent:4 17:21:30.057 [main] INFO queue.PriorityQueue - 值比对,父节点:4 目标节点:9 17:21:30.057 [main] INFO queue.PriorityQueue - 完成 Idx:10 Val:9 当前队列:[1,3,5,11,4,6,7,12,15,10,9]
17:21:30.057 [main] INFO queue.PriorityQueue - 元素:8 当前队列:[1,3,5,11,4,6,7,12,15,10,9,null,null,null,null,null,null,null,null,null,null,null,null,null] 17:21:30.057 [main] INFO queue.PriorityQueue - 寻找当前节点的父节点位置。k:11 parent:5 17:21:30.057 [main] INFO queue.PriorityQueue - 值比对,父节点:6 目标节点:8 17:21:30.057 [main] INFO queue.PriorityQueue - 完成 Idx:11 Val:8 当前队列:[1,3,5,11,4,6,7,12,15,10,9,8,null,null,null,null,null,null,null,null,null,null,null,null]
17:21:30.057 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:1 下节点:3 位置替换 17:21:30.057 [main] INFO queue.PriorityQueue - 左右子节点比对,获取最小值。left:11 right:4 17:21:30.057 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:3 下节点:4 位置替换 17:21:30.057 [main] INFO queue.PriorityQueue - 左右子节点比对,获取最小值。left:10 right:9 17:21:30.057 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:4 Val:8 17:21:30.057 [main] INFO heap.__test__.HeapTest - 测试结果:1 17:21:30.057 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:3 下节点:4 位置替换 17:21:30.057 [main] INFO queue.PriorityQueue - 左右子节点比对,获取最小值。left:11 right:8 17:21:30.057 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:4 下节点:8 位置替换 17:21:30.057 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:4 Val:9 17:21:30.057 [main] INFO heap.__test__.HeapTest - 测试结果:3 17:21:30.057 [main] INFO queue.PriorityQueue - 左右子节点比对,获取最小值。left:8 right:5 17:21:30.057 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:4 下节点:5 位置替换 17:21:30.057 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:5 下节点:6 位置替换 17:21:30.057 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:5 Val:10 17:21:30.057 [main] INFO heap.__test__.HeapTest - 测试结果:4 17:21:30.057 [main] INFO queue.PriorityQueue - 左右子节点比对,获取最小值。left:8 right:6 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:5 下节点:6 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 左右子节点比对,获取最小值。left:10 right:7 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:6 下节点:7 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:6 Val:15 17:21:30.058 [main] INFO heap.__test__.HeapTest - 测试结果:5 17:21:30.058 [main] INFO queue.PriorityQueue - 左右子节点比对,获取最小值。left:8 right:7 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:6 下节点:7 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:7 下节点:10 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:5 Val:12 17:21:30.058 [main] INFO heap.__test__.HeapTest - 测试结果:6 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:7 下节点:8 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 左右子节点比对,获取最小值。left:11 right:9 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:8 下节点:9 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:4 Val:15 17:21:30.058 [main] INFO heap.__test__.HeapTest - 测试结果:7 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:8 下节点:9 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:9 下节点:11 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:3 Val:12 17:21:30.058 [main] INFO heap.__test__.HeapTest - 测试结果:8 17:21:30.058 [main] INFO queue.PriorityQueue - 左右子节点比对,获取最小值。left:11 right:10 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:9 下节点:10 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:2 Val:15 17:21:30.058 [main] INFO heap.__test__.HeapTest - 测试结果:9 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:10 下节点:11 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:1 Val:12 17:21:30.058 [main] INFO heap.__test__.HeapTest - 测试结果:10 17:21:30.058 [main] INFO queue.PriorityQueue - 替换过程,节点的值比对。上节点:11 下节点:12 位置替换 17:21:30.058 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:1 Val:15 17:21:30.058 [main] INFO heap.__test__.HeapTest - 测试结果:11 17:21:30.058 [main] INFO queue.PriorityQueue - 替换结果,最终更换位置。Idx:0 Val:15 17:21:30.058 [main] INFO heap.__test__.HeapTest - 测试结果:12 17:21:30.058 [main] INFO heap.__test__.HeapTest - 测试结果:15
Process finished with exit code 0 小堆就是一个正序的输出结果,从小到大的排序和输出。 小堆空间:[1,3,5,11,4,6,7,12,15,10,9,8,null,null,null,null,null,null,null,null,null,null,null,null]
public class MaxHeap extends Heap<Integer> {
@Override
public int compareTo(Integer firstElement, Integer secondElement) {
return secondElement.compareTo(firstElement);
}
}