gpt4 book ai didi

c - C 中的数据结构

转载 作者:行者123 更新时间:2023-11-30 16:01:34 25 4
gpt4 key购买 nike

我必须用 C 语言实现一个程序,并且我需要一个数据结构来有效地管理一些数据。我想知道什么是最好的方法来做到这一点。任何建议或指示表示赞赏。谢谢!

要存储的数据类型的简化示例如下。假设对于学校教授的每一门科目,我们需要跟踪成绩落在某个范围内的学生数量。假设范围大小是用户定义的并且为 10,因此范围将为 0-9、10-19、20-29 等。范围的起始值为 1、10、20 等。因此,数据如下所示:

Subject Id,  start of range of student grades, #students who got grades within this range. 
1 30 1
80 5
90 6

2 50 3
60 6

3 40 1
70 5

请注意,所有范围都是不同的,即没有两个主题可以具有相同的起始范围。

注意:这不是有人指出的家庭作业,我真的需要它来跟踪文件名、不同用户的访问计数(#次访问)以及在特定时间段(范围)内的访问计数。

最佳答案

大小为主题数除以范围数的矩阵(二维数组)怎么样?每个元素将保存特定范围内特定学科的学生人数。

需要分别进行Range start到矩阵中Column的映射。

更新:

既然你说你有 100M 条目,那么加起来就需要很大的内存了。考虑添加额外的间接层并将大矩阵划分为许多较小的矩阵。(您需要从主题到整数行索引以及从范围到列索引的映射。主题 1 到 N 和范围 1 到 M 转到 Matrix1,N+1 到 2N 和 M+1 到 2M 转到 Matrix1。 Matrix2 等。)

您需要进行大量测试并确定提供最佳性能的 N 和 M。 (制作一个运行大量“常见”操作并对它们进行计时的程序。将执行时间绘制成图表,按操作类型划分,作为 N 和 M 的函数。)由于它们取决于处理器缓存和其他参数,因此不同系统上的值不太可能相同,因此它们应该可以在最终程序上进行配置。

编辑:

我的解决方案将创建一个如下所示的矩阵(基于您帖子中的数据)。您可能需要复制粘贴它才能以全角查看。

Subject\Range
0 1 2 3 4 5 6 7 8 9
1 0 0 0 1 0 0 0 0 0 6
2 0 0 0 0 0 3 6 0 0 0
3 0 0 0 0 1 0 0 5 0 0

其中有很多 0,因此内存效率不高。它应该具有不错的性能(您可能需要检查将矩阵划分为更小的矩阵并测试这些实现的性能的选项。)

要查找给定主题的已使用范围,您需要检查与该主题相对应的行,任何单元格 > 0 表示其列与已使用范围匹配。要查找给定范围的主题,请检查相应范围的列。

关于c - C 中的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6389354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com