| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6271 人关注过本帖, 2 人收藏
标题:华山论剑 之 [矩阵]
只看楼主 加入收藏
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
终于回来了。粗略地看了下小施与有容的代码,简单点评一下,说的不对的地方两位见谅呵呵。


小施的代码利用链表实现矩阵的压缩存储,矩阵的尺寸可根据需要在机器资源允许的范围内任意伸缩。达到了我开贴的要求。再确认一下有没有什么BUG就准备领奖吧。

美中不足是效率偏低,对数据的检索在行列两个方向上都是顺序检索。这样虽然可以最大限度地降低空间的消耗,但代价是时间。

一个折衷的方案是对于矩阵的其中一维使用数组(这样可以直接检索以提高检索效率),另一维使用链表以降低空间消耗。一般行的头指针用数组,每行元素用链表。


有容的代码是用一个固定尺寸的一维数组来存储稀疏矩阵的有效元素。这种做法在小范围内可以实现矩阵操作的要求,但毕竟是受限的。固定的空间操作小规模的矩阵存在空间浪费,而对于大规模的矩阵可能又会因为空间不足而操作失败。而且这种结构的矩阵操作算法效率更低,元素的插入删除需要做大量的数据移动。

呵呵,建议有容重新设计矩阵结构,再接再厉。

关于稀疏矩阵的判定标准是个很模糊的概念,小施提到的那个判定公式也不过是个经验公式。所以,我们建立的稀疏矩阵理论上要完全能够操作一个普通矩阵才行(因为空间不足导致操作失败的因素不予考虑)。

重剑无锋,大巧不工
2012-08-10 19:36
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 41楼 beyondyf
呵呵 是啊 所以我说自己那个很原始 最近才用心学数据结构很多不懂 有的理解起来也困难 不过我争取用邻接表来实现 。

梅尚程荀
马谭杨奚







                                                       
2012-08-10 20:04
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:0 
回复 41楼 beyondyf
BUG应该是没有了,求领奖,哈哈。

我感觉我是在写哈希表,把纵向链表换成一维数组确实是个不错的注意。

求分
2012-08-10 20:07
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
呵呵,有容继续努力。再等两天,看看还有没有人想拿这分。

你俩后天晚上7点左右记得来领分,过期作废哦!

重剑无锋,大巧不工
2012-08-10 20:24
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:0 
回复 44楼 beyondyf
太狠了吧,领分也要上线来领
2012-08-10 20:56
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 45楼 demonleer
这个论坛的分有三种。可用分、专家分、积分。

可用分只能靠自己发贴获取(还有参与投票)。

专家分靠回答坛友问题由坛友赠予。

积分,网友请帖赠予。

如果你你俩想要积分我倒是现在就可以给你们,专家分如果你俩想平分这贴的100分也可以,但想得到我承诺的每人百分只能由我开新贴你们来领。

正在细看你们的代码,刚看到小施的matrix_set函数即发现问题。回答以下问题

1.当参数line或row为负值应该怎么处理。
2.当参数value为0应该怎么处理。

重剑无锋,大巧不工
2012-08-11 10:53
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:0 
以下是引用beyondyf在2012-8-11 10:53:49的发言:

这个论坛的分有三种。可用分、专家分、积分。

可用分只能靠自己发贴获取(还有参与投票)。

专家分靠回答坛友问题由坛友赠予。

积分,网友请帖赠予。

如果你你俩想要积分我倒是现在就可以给你们,专家分如果你俩想平分这贴的100分也可以,但想得到我承诺的每人百分只能由我开新贴你们来领。

正在细看你们的代码,刚看到小施的matrix_set函数即发现问题。回答以下问题

1.当参数line或row为负值应该怎么处理。
2.当参数value为0应该怎么处理。


line和row为负值确实没有考虑去处理,这是个问题。

value为0的时候,先判断对应的位置是不是非0值,如果是的话,释放该结点,否则直接返回,因为默认就是0值。
2012-08-11 11:33
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
0的问题是我看错了,你确实释放了该结点。呵呵,被你的变量名row给搞混了。

继续阅读中......

重剑无锋,大巧不工
2012-08-11 13:02
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:0 
以下是引用beyondyf在2012-8-11 13:02:03的发言:

0的问题是我看错了,你确实释放了该结点。呵呵,被你的变量名row给搞混了。

继续阅读中......


杨大哥仔细阅读我的代码是我的荣幸啊。

代码写了没人看确实是很没意思。
2012-08-11 13:10
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 49楼 demonleer
俺在看 写的很好啊  。。。

梅尚程荀
马谭杨奚







                                                       
2012-08-11 14:03
快速回复:华山论剑 之 [矩阵]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017081 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved