算法算法算法

renran0320 2012-02-09 11:43:01
现在有这样一个问题。

序号 A列 B列 C列
1 10 50
2 10 30
3 30 10
4 30 40
5 40 30
6 50 10


请问怎么把和B列相同的A列的序号放到C列里面。
例如:B列的第一行是50 ,那C列的第一行就应该是 6
B列的第2行是30, 那么C列的第二行就应该是 3,4

怎么写函数,会缩短程序的判断时间。
我能想到的最笨的办法就是,从B的第一行开始,然后依次去A列里面查找。
但是数据记录比较多的话,时间又会很长。有没有什么好一点的办法。谢谢大家赐教了。

...全文
182 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
renran0320 2012-02-09
  • 打赏
  • 举报
回复
目前无法采用数据库方法,看来只能先使用数组了。
kaikai_kk 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 babydog01 的回复:]
update aa set aa.C列=bb.序号 from aa,(select 序号,A列 from aa) bb where aa.B列=bb.A列
[/Quote]

这个求出来C列只有一个值,是不对的;C列可能有多个值,用逗号连接的
lzg827 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lzg827 的回复:]
引用 3 楼 babydog01 的回复:
update aa set aa.C列=bb.序号 from aa,(select 序号,A列 from aa) bb where aa.B列=bb.A列

用数据库的话,楼上语句就可以了

如果全部在delphi代码实现,可以用数组。
这样比较快。
[/Quote]
一个3维数组就可以了。如果记录海量,对每个数组构造哈希查询,会比一般循环查找快很多
lzg827 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 babydog01 的回复:]
update aa set aa.C列=bb.序号 from aa,(select 序号,A列 from aa) bb where aa.B列=bb.A列
[/Quote]
用数据库的话,楼上语句就可以了

如果全部在delphi代码实现,可以用数组。
这样比较快。
babydog01 2012-02-09
  • 打赏
  • 举报
回复
update aa set aa.C列=bb.序号 from aa,(select 序号,A列 from aa) bb where aa.B列=bb.A列
pppp0840 2012-02-09
  • 打赏
  • 举报
回复
的确,用数据库要方便多了
s11ss 2012-02-09
  • 打赏
  • 举报
回复
数据记录太多的话,不如用单机数据库如MySQL,执行SQL语句填C列!

16,747

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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