链表的随机插入不比数组快

前几天看了《Java程序员职场全攻略:从小工到 专家》,其中讲到Java中的链表随机插入并不比数组快,这跟我们教科书上所说的相悖,书中举的例子是Java的。今日闲来无事,我用C++做了个实验,使用的链表是list类,数组用vector类替代,过程如下:

先上代码:

计时使用的是滴答数,先插入1000个元素,结果如下:

1000

插入10000个元素的结果:

10000times

可以看出,随着插入元素的增多,list的速度较vector越来越慢,插入10000个元素时差了百倍不止,虽然理论上list的插入速度要比vector快,因为vector要移动元素,list只要变动两个指针,但是这仅仅是从插入这个动作做比较,我们在实际使用时看的是整体效果,定位插入的位置也是需要时间的,而这一步,vector只需要常数时间,而list却需要线性时间,这样一中和,list的插入优势就没了。实际使用中随机插入还是用vector来的快。

其实计算机科学中有许多类似的现象,理论上对的,实际使用时并不一定就好使,例如KMP算法。并不是说实际使用时理论就不对了,而是现实中影响的因素太多,要获得最佳的效果,还得多实践,毕竟程序员做的是类似工程师的工作,永远要以事实说话的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值