课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
性能优化一直以来都是程序员需要重点关注的一个问题,而今天我们就一起来了解一下,性能优化数据结构优化方法。
数据结构之所以重要是因为不同的数据结构表现出来的数学性质是构成特定算法的基础。就好比各种化学元素可以搭建各种性质不同的化合物,而不同性质的化合物正式化学工程所依赖的基础。计算机科学的数据结构可以大致分为两种,一种是数组,另一种是链表。两种性质截然相反的“物质”。
数组——线性性能好,支持随机访问,按照索引取数组中的元素时间复杂度是O(1),而插入与删除元素时间复杂度是O(n);
链表——扩展性能好,支持动态的增减元素,插入、删除元素的时间复杂度是O(1),而检索元素的时间复杂度变成了O(n);
(注:O标记是数学语言,用于标记一个函数的增长快慢,是一个渐进界函数,具体细节可以参考屈婉玲教授的详细解释)
这个世界有时候是惊人对称的,对称是美妙的。这样一对性质完全互斥的结构就是构成所有高等数据结构的基础。就像中国传统文化中的太极一样,你中有我我中有你,互相补充,世间万物的运行法则皆可解释。
当然,数据结构是可以融合的,比如Java中的LinkedHashMap就是融合了数组、哈希表与链表的优秀实践。普通的哈希表因为通过哈希函数将元素链接到数组的索引号上面,实现高速的查找性能,但是丢失了元素的插入顺序,而有时候我们需要这个顺序性来实现特殊的需求,比如缓存淘汰策略;而如果使用链表,形成一个插入的队列,先插入的在队列头,后插入在队列尾部;但是这样虽然保存了插入的顺序但是丢失了查找性能;为了平衡,我们可以在哈希表的基础上,每个元素再增加一个指针用来连接前后插入的元素,形成队列,这样没插入一个元素不仅在哈希表上挂载新的索引点,还要将新元素挂接到队列的尾部,而每一步都是O(1)的开销,是可以接受的,这就是LinkedHashMap的实现原理。
希望这辈子,最让你无悔的事情就是来达内学习!学习向来不是件易事,但无论过程多么艰难,希望你依然热爱生活,热爱学习!永远记得,达内将与你一同前行!现在扫码,立即领取万元课程礼包,助力0基础快速入行,为你梳理行业必备技能,全方位了解岗位发展前景!
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。