[C#]有心人问道 11:06:11
请教大家一个算法问题。
有N个数组,要用这些数组中的成员中的数据与其他数组中的数据做对比,请问怎么做最快?
数组中的成员都是线,
list llist=new list();
要用 llist 中的线与其他llist中的线作对比。
比如有N个数组
foreach(list in lists )
{
list 与 lists 中的其他数组作对比。
}
请问有没有方法替换上面这种循环?
[C#]有心人问道 11:07:55
注意的是,一条线的起点值并不一定是另一条线起点值,可能是它的终点值。
[C#]羽翼 11:12:34
比线干嘛
[C#]有心人问道 11:13:16
....
作一个统计。
疯狂青蛙 11:14:12
这个数组先处理下
然后用Dictionary来是不是简单些
处理成起点X坐标不大于终点X坐标
[C#]有心人问道 11:15:23
可以再详细一点吗?
疯狂青蛙 11:16:18
其实list就可以了.
list.has(xxxx)
[C#]羽翼 11:17:19
你是想比较两个线 是否相连?相交? 平行?
[C#]有心人问道 11:17:32
是这样的,这线是我自己定义的。
它有名称,有其他属性。所以我不知道怎么用has来判断
疯狂青蛙 11:18:21
那自己继承集合接口写一个LineCollection
[C#]有心人问道 11:18:23
比两条线的坐标是否相同,不管线一的起点等于线二的终点还是起点...
疯狂青蛙 11:18:28
has方法也能重写
疯狂青蛙 11:19:15
他不想每次都这么写几层循环,对吧
[C#]羽翼 11:19:24
给你个思路
[C#]有心人问道 11:19:32
羽翼,你跑题了。
[C#]羽翼 11:19:41
好吧 哈哈
[C#]有心人问道 11:19:44
其实对比的时间用不了多少。
疯狂青蛙 11:19:48
不光是坐标,还有什么属性
[C#]羽翼 11:20:01
哦哦 我以为他比坐标呢
疯狂青蛙 11:20:08
把这些属性都封装到一个类里面
[C#]有心人问道 11:20:10
只要坐标相同,就认为是一致的。
[qqimg]oldimg/{AACD8EFE-5290-FA69-843C-606E1E232AA7}.jpg[/qqimg]
疯狂青蛙 11:20:52
你也做管道?
[C#]有心人问道 11:21:00
是啊,
[沪C#]无情剑客 11:21:22
对CPU来说,纯比较算不了什么。CPU每秒运算的速度是很快的
[C#]羽翼 11:21:23
可以将List 数组中的 起始点坐标 按照X做一个排序,将数组从小到大重组, 然后对比,之后小的就直接跳出 进入下一数组循环,可以节省点时间
[C#]有心人问道 11:21:46
但是我算了一个小时了。
[沪C#]无情剑客 11:22:01
那就是代码有问题
[C#]羽翼 11:22:50
之前处理云数据的时候 我经常遇到这种状况
疯狂青蛙 11:22:51
毕竟有宿主
疯狂青蛙(275171906) 9:33:25
jig属性块时.在原点和鼠标点位置都出现了属性块
疯狂青蛙(275171906) 9:33:27
如何解决
[C#]羽翼 11:23:10
有心人的 循环对比算法 有问题
出现了大量重复
疯狂青蛙 11:23:35
建议你读一下 算法导论这本书
[C#]羽翼 11:23:49
你可以撇开EACH 这个函数 自己写一个对比
疯狂青蛙 11:23:52
对排序 比较 查找 和常见的问题都有介绍
[C#]羽翼 11:24:04
比EACH高效
[C#]有心人问道 11:24:43
我是想在线集合类中加一个事件,一个INDEX 和一条线字段。当一条线赋予给线字段后,线的事件马上得到回应,自己与这条线去做对比。然后把自己的ID给INDEX
你们觉得可以吗?
所以我不想用太多循环啊、 |