在测试时间的代码里应该把验证堆实现是否正确的代码去掉

来源:8-5 Heapify 和 Replace

zhured

2019-08-06

在测试时间的代码里应该把验证堆实现是否正确的代码去掉,去掉之后比较1000万的数据,时间差距还是很明显的。图片描述

写回答

1回答

liuyubobobo

2019-08-06

我测试了一下,这里最大的时间差距,应该是因为在不是 isHeapify 的情况下,如果初始是一个空的 MaxHeap,在不断添加元素的情况下,对动态数组的扩容操作会使用大量时间。


所以,如果,我们的 else 中,创建 MaxHeap 的方式是这样:

// 传入数据容量大小,一次性创建足够的空间
maxHeap = new MaxHeap<>(testData.length);


结果应该更合理:)


在我的计算机上,1000万数据,不要后续验证,结果是这样的:)

//img.mukewang.com/szimg/5d48a71609129dda22480322.jpg


继续加油!:)

1
3
源自我心
回复
liuyubobobo
我如果不把这段验证代码去掉,1000万数量级,With heapify比Without heapify花的时间还多;只有到了5000万数量级,With heapify比Without heapify花的时间明显少
2019-08-10
共3条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程