算法:C语言实现
The Sardine
这个作者很懒,什么都没留下…
展开
-
《算法:C语言实现》_第一部分_用快速合并算法实现解决连通性问题
上一篇文章讲到,快速查找算法只适合开销不大的连通性问题上,现在对此进行改进。 每次合并遍历全部数组效率太低,能不能不要每次遍历数组全部值,优化为每次只遍历数组的部分值,复杂度因此就会降低。 快速合并的补算法 它与快速查找算法都基于同一个数据结构——通过对象名引用数组元素,但数组元素表达的含义不同,具有更复杂的抽象结构。 这里运用到了树结构,在连通性的关系中, p->k & q->k = p->q 可将k是为根节点,p和q是为子节点,p和q有共同的根结点k,故p和q连通。 数据结构原创 2020-11-07 22:38:46 · 307 阅读 · 0 评论 -
《算法:C语言实现》_第一部分_连通性问题解决算法
解决连通问题算法 快速-查找算法的一种简单实现。 快速-查找算法结构 该算法的基础是一个整型数组,当且仅当第p个元素和第q个相等时,p和q是连通的。 初始时,数组中的第i个元素的值为i,0<=i<N。为实现p与q的合并操作,我们遍历数组,把所有名为p的元素值改为q(或者将名为q的元素改为p)。 代码结构 从标准输入读取小于N的非负整数对序列(对p-q表示“把对象p连接到q”),并且输出还未连通的输入对。 数组id,每个元素表示一个对象,有以下性质,当且仅当p和q是连通的,id[p]和id[q]相原创 2020-11-05 22:52:41 · 253 阅读 · 0 评论 -
《算法:C语言实现》_第一部分 基础知识_引言
算法与数据结构 大多数算法关注的是计算机中涉及的数据的组织方法。用这种方法建立的对象称为数据结构。它们都是计算机科学研究的核心。 简单算法可以导致非常复杂的数据结构,反之,复杂算法可以利用简单数据结构以便理解算法。 算法在大规模问题中更能凸显重要性 对于大规模问题(或者需要求解大量小规模的问题的应用),我们的动机就是设计时间和空间都尽可能高效的方法。 一个设计良好的算法会使程序快上数百万倍。 学习算法目的 学习求解重要任务的合理算法,仔细关注这些方法之间可比较的性能。不应该利用不清楚会消耗什么资源的算法,了原创 2020-11-04 23:32:28 · 203 阅读 · 0 评论