算法算法算法

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列里面查找。
但是数据记录比较多的话,时间又会很长。有没有什么好一点的办法。谢谢大家赐教了。

...全文
255 7 打赏 收藏 转发到动态 举报
写回复
用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列!
实验题目 设计和实现关于内存管理的内存布局初始化及内存申请分配、内存回收等基本功能操作函数,尝试对用256MB的内存空间进行动态分区方式模拟管理。内存分配的基本单位为1KB,同时要求支持至少两种分配策略,并进行测试和对不同分配策略的性能展开比较评估。 最佳适应算法(Best Fit):    它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表(空闲区链)中的空闲分区要按从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。该算法保留大的空闲区,但造成许多小的空闲区。因为它要不断地找出能满足作业要求的、且大小最小的空闲分区,所以比较比较频繁。但是,对内存的利用率高 循环首次适应算法(Next Fit):    该算法是首次适应算法的变种。在分配内存空间时,不再每次从表头(链首)开始查找,而是从上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得较均匀。比较次数少于最佳适应算法(Best Fit),内存利用率低于最佳适应算法(Best Fit)。

16,742

社区成员

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

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