怎么理解:"通常,算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。"

liliah 2002-09-25 01:28:37
数据结构作为一门学科主要研究数据的各种逻辑结构和存储结构,以及对数据的各种操作。因此,主要有三个方面的内容:数据的逻辑结构;数据的物理存储结构;对数据的操作(或算法)。通常,算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。

...全文
2582 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
liliah 2002-09-27
  • 打赏
  • 举报
回复
starfish(海星) :十分感谢您的耐心的解释!
starfish 2002-09-26
  • 打赏
  • 举报
回复
比如对于某个实际问题
你建立了一个图论模型,
而图就是数据的逻辑结构。
但要实现各种图论算法,必须在计算机中用某种数据结构来表示图,比如可以用邻接矩阵,或者用邻接表。无论是邻接矩阵实现还是邻接表实现,这都是数据的物理结构。究竟是用那种物理结构,要根据你的所选择的算法来决定。邻接矩阵的好处是判断两个节点是否相邻效率很高,但缺点是如果要访问和某个节点相邻的全部节点效率较低,而邻接表对于访问某个节点的所有相邻节点则效率很高。所以,到底选择何种物理结构,需要取决于你的算法所需要进行的操作。如果你的算法中多次用到判断两个节点是否相邻,则用邻接矩阵效率更高;但如果你的算法需要多次遍历某个节点的所有节点,则用邻接表比较好。所以,算法的实现效率取决于数据的物理结构。
另一个例子是线性表,线性表本身是数据的逻辑结构,他表示了数据之间的线性关系;但线性表可以用数组贺链表实现,数组是随机访问的物理结构,链表是间接寻址的物理结构,数组得好处是随机访问线性表的某个元素效率很高,但数组的插入删除效率不高;而链表的缺点是随机访问其中第i各元素效率不高,因为需要从头遍历到第i个元素,但链表的插入删除效率很高。至于到底是用链表还是数组来实现线性表,就要看你的算法中主要需要用到那种操作,如果你的算法中经常需要随机访问数组元素,用数组比较好;如果需要多次插入删除元素,则应该用链表。


因此,算法的设计和数据的逻辑结构有关(选择到底是用图还是用线性表来作为实际问题的某型),算法的实现效率和数据的物理结构有关(选择到底是用那种物理结构实现图或线性表)。

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧