当前位置: 首页 > news >正文

企业网设计方案整站关键词排名优化

企业网设计方案,整站关键词排名优化,西安免费建网站制作,万户网络骗局引导 今天我们进入链表的学习#xff0c;我相信大家对链表都很熟悉。链表和数组一样#xff0c;作为最基础的数据结构。在我们的工作中常常会使用到。但是我们真的了解到数组和链表的区别吗#xff1f;什么时候使用数组#xff0c;什么时候使用链表#xff0c;能够正确的选…引导 今天我们进入链表的学习我相信大家对链表都很熟悉。链表和数组一样作为最基础的数据结构。在我们的工作中常常会使用到。但是我们真的了解到数组和链表的区别吗什么时候使用数组什么时候使用链表能够正确的选取吗 链表需要我们进行一些练习才能更好的掌握。我后面也会结合几个经典的练习题进行训练。 链表和数组区别 数组和链表的最大区别就是存储了。从上一栏我们了解到数组的存储结构是连续的。链表与之恰恰相反它可以利用内存中零碎的内存空间。如图 这样就存在一个问题当我们向内存申请100M的数组时即使内存剩余200M内存但经常会提示申请失败“out of memory”。因为内存中存在着很多的内存碎片导致200M内存中基本不存在100M连续的。但是链表就不会存在这种情况因为它支持动态分配不需要内存地址上的连续要求。 单链表 单链表是比较简单的了并且也比较常见。结构图如下 单链表的删除新增操作的时间复杂度 我们知道数组的删除新增操作要进行数据的搬移保证数据的连续性。导致数组的复杂度为O(n)。但是单链表并不需要进行数据的搬移只要修改节点的指针的指向即可。所以链表的复杂度时O(1)。 单链表的随机访问的时间复杂度 数组的存储是连续的当知道下标时数组复杂度O(1);但是链表由于不是连续存储的所以在访问第i个节点时需要从头节点一个接一个遍历。因此链表复杂度O(n)。 循环链表 循环链表其实就是特殊的单链表尾节点指向了头节点。因此它也不是很难。不过对于特殊的问题使用循环链表比较方便。比图经典的约瑟夫问题。结构图如下 双向链表 双向链表虽然我们接触的不多但在项目中双向链表比单链表使用的更加广泛。 双向链表其实就是多了一个指针变量指向了前节点。结构图如下 正如我们上面说的双向链表在工作中使用的往往比单链表要广泛为什么呢 从链表的删除举例删除链表的中节点无非就是以下两种情况 删除节点中值等于某个特定值的节点删除给定指针指向的节点 对于第一种情况无论是单链表或双链表都要先找到对应的节点再进行删除操作。 根据复杂度的加法原则O(n)O(1)O(n)。两者的复杂度都是O(n)。 对于第二种情况给定一个需要删除节点之后仅需要将该节点的前节点指向该节点的下一个节点即可。 但是单向链表需要进行遍历找到该节点的前节点。需要O(n)。所以单链表需要O(n)。但是由于双向链表每个节点有指向前节点的指针。故双向链表仅需O(1)。 其实第二种情况是我们经常会遇到的比如LinkedHashMap容器就是使用了双向链表。 不仅仅时删除和插入操作双向链表比单向链表高效。其实查询也会比单向链表高效。比如在一个有序的链表中我们可以保存上一次查询节点判断查询值的大小采取向上还是从下查询的方式。 其实这就是一个空间换时间的例子双向链表虽然比单向链表要高效但是它比单向链表多一个指针变量。因此消耗的内存资源也会比较多。 数组和链表的选择 我觉得数组和链表的选择应该要结合以下几点因素考虑 1. 时间复杂度 数组的随机访问时间复杂度是O(1),删除操作的复杂度O(n);链表的随机访问的复杂度是O(n),删除操作的复杂度O(1);结合你的业务逻辑评价主要是查询操作居多还是删除操作居多。 2. 内存要求 因为链表中每个节点需要一个指向下一个节点的指针变量所以链表比数组消耗更多的内存资源。当你的内存资源比较有限的情况下我还是建议你使用数组。 3. 性能提高--CPU缓存机制 我们知道数组的访问比链表要高效。但是这只是从时间复杂度来分析的。但是不仅仅如此数组在访问操作时因为cache机制的存在效率会更加高。因此如果你想更进一步提高访问的效率我建议你也选择数组。 总结综上所述数组有这么多的优势我们是不是基本都选择数组呢我们工作中基本还是选择链表较多。因为我们基本不会存在性能和内存资源上的担忧并且链表使用起来还是比较方便的。 什么是CPU缓存机制 上面我们谈到了CPU缓存机制数组对CPU缓存机制比较友好能够加快访问效率但是链表对其不友好不能提高效率。但是何为CPU缓存机制呢其实它是依据操作系统中局部性原理来实现的。 所谓的局部性原理包括两个部分时间局部性和空间局部性。时间局部性指的是最近访问的存储位置很可能在不久的将来还要访问空间局部性指存储访问有聚集的倾向当访问了某一个位置之后很有可能也要访问附近的位置。 我们知道Cache是高速访问的缓存比内存的访问还要快。CPU从内存中访问数据并不会仅仅只获取该地址的内容。而是会将该内容在内的物理块一起放到Cache缓存中。下次再读取内容时首先再Cahce中找找不到再从内存中重复上面的操作。 因为数组的存储空间是连续的所以能够很好的适应CPU缓存机制。但是链表是非连续存储的所以对CPU缓存机制不友好。 总结 了解了数组和链表之间的区别以及如何选择数组和链表数据结构。数组对CPU缓存机制更加友好。
http://www.dnsts.com.cn/news/1938.html

相关文章:

  • 建设项目查询网站seo课
  • 网站建设设计公司关键词云图
  • 网店推广的常用方法有哪些杭州seo技术培训
  • wordpress设置页面403权限宁波seo智能优化
  • ps个人网站怎么做百度地图在线使用
  • dz网站收款即时到账怎么做的流氓网站
  • 沈阳网站百度竞价投放
  • 网站建设项目策划书游戏优化是什么意思
  • 外贸网站做开关行业的哪个好北京首页关键词优化
  • 自制网站除了购买域名还要怎么做提升网页优化排名
  • 北京手机站建站爱站网关键词查询系统
  • 践行新使命忠诚保大庆网站建设重庆seo务
  • 邮箱登陆嵌入网站百度广告太多
  • 做网站 设备郑州优化公司有哪些
  • 电子商务网站开发技术免费推广软件
  • 企业建设网站公司简介网上有免费的网站吗
  • 海洋公司做网站推广游戏推广论坛
  • 网站手册网站快速收录
  • 泉州企业自助建站系统网络营销的概念和特征
  • 网站设计与开发实例seo中文意思是
  • 做类似交易猫的网站静态网页制作
  • 北京大型网站建设免费制作网站的软件
  • 网站使用的语言独立网站和平台网站
  • 手机运用网站篮网最新消息
  • 营销网站建设公司排名推广app赚佣金平台有哪些
  • 网站建设总体情况群发软件
  • 现在都不用dw做网站了吗百度pc端首页
  • 好的网站特点推广联盟平台
  • 电子商务网站管理内容seo招聘网
  • 有哪些做分析图用的网站网络推广宣传方式