需求一个最优算法

[复制链接]
查看11 | 回复4 | 2021-1-27 06:56:29 | 显示全部楼层 |阅读模式
将数据库中的某天N笔记录(为商品编号为主键的记录,每个商品编号每天在数据库中存在多笔比如:A商品今天有记录1万笔B商品今天有记录1万2千笔每笔记录对用相应的商品重量)拆分到多个文件中,每个文件需满足如下条件:
1>记录不能超过1万笔(同一商品编号的记录尽可能写在一个文件中,超过1万笔则分文件写)
2>总重量不低于100KG(低于则排除)
目的:尽可能文件数量少解决问题
下次有分再补上,谢谢。。。。。
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:56:29 | 显示全部楼层
若销售表是T,含有3个字段,id,weight,date
createtemporaryt1
(idint,weightint);
insertintot1selectid,sum(weight)wheredate=curDate()fromtgroupbyid;
deletefromt1whereweight<100;//小于100KG
select*fromTwheret.id=t1.idandt.date=curDate()orderbyid;使用重定向输出到文件。
这一过程完成后,编写一个C程序,从文件中逐行读出商品记录,并写入到另一文件,如发现某一商品记录已经超过10000条。关闭输出文件,重建一个新文件,继续输出其余的记录。

回复

使用道具 举报

千问 | 2021-1-27 06:56:29 | 显示全部楼层
谢谢楼主的回帖
我想要寻求一个最优算法,假如出现下列情况(还有其他情况),比如A商品有6000条记录,写入X文件,接着B商品5000条记录,但是一个文件只能写10000条记录,那么只能新写入另外一个文件,但X文件还是可以写小于等于4000条记录的商品的...
回复

使用道具 举报

千问 | 2021-1-27 06:56:29 | 显示全部楼层
和操作系统存储器的连续分配的方法类似,就像页内碎片一样,这种不可利用的小剩余空间是必然存在,没有最优算法
推荐你看看操作系统存储器分配方面的资料,主要有首次适应算法,循环首次适应算法和最佳适应算法
回复

使用道具 举报

千问 | 2021-1-27 06:56:29 | 显示全部楼层
谢谢,不知道还有其他好的建议不...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行