我在linux上进行c编程,遇到了一个需要非常快的查找速度的问题。 如果一个表像正常的MySQL表一样,如下所示: ID name age sex score_a score_b score_c date 这是恒定的 ,这意味着一旦创build了该表并且不允许更新。 它只用于阅读。 由于它是不变的,所以我猜想必须有一个更好的索引格式,以便按照条件(如年龄,分数等)快速查找,而不是在大多数索引数据库中实现的“B树索引”。
这里的随机性意味着伪随机性,就像Linux的随机数生成器一样。 例如,我有100-1000个数组,每个数组包含由Linux伪随机数生成器生成的10000个随机整数。 现在给出一个新的整数序列,如果像分类或聚类这样的机器学习algorithm能够检测这个整数序列是否是像以前的训练数据那样的伪随机数序列? 出于某种原因,我并不关心给定序列的实际随机性,我只想知道这个给定的序列是否由某个特定的linux伪随机整数生成器生成。 假设Linux RNG确实有一个归纳函数来产生一个伪随机整数序列,那么我们是否可以根据这个RNG产生的现有随机序列来预测现有的整数序列是否是由这个RNG产生的呢?
POSIX二叉树函数的手册页包含以下语句: tdelete()返回一个指向已删除项目的父指针,如果找不到该项目,则返回NULL 。 tdelete()释放树中节点所需的内存。 用户负责释放相应数据的内存。 这意味着无法从tdelete()调用访问给定键的节点数据。 需要调用tfind() (而不是tsearch()以便不添加给定的键),执行节点数据的销毁,然后用相同的键调用tdelete()以从二叉树中移除节点。 我有正确的解释吗? 有什么方法可以解决我认为这种方法的局限性? 如果密钥是堆分配的,在删除节点之前,它不能被释放(或者对正在使用的比较函数没用)。 这需要调用tfind()来获得指向数据的指针, tdelete()去除该节点,然后销毁从tfind()调用中获取的数据。 需要两个查找来删除一个节点并销毁它所包含的数据。
在linux内核中include / linux / bitmap.h,函数bitmap_set() void bitmap_set(unsigned long *map, int start, int nr) { unsigned long *p = map + BIT_WORD(start); const int size = start + nr; int bits_to_set = BITS_PER_LONG – (start % BITS_PER_LONG); unsigned long mask_to_set = BITMAP_FIRST_WORD_MASK(start); while (nr – bits_to_set >= 0) { *p |= mask_to_set; nr -= bits_to_set; bits_to_set […]
lfind / lsearch性能比典型的循环解决scheme要好吗? 这些function是否有特殊的原因?
我在Linux上编程C,我有一个大的整数数组,如何过滤它,find适合某些条件,例如值> 1789 &&值<2031的值。有什么办法做到这一点,我需要sorting这个数组第一? 我已经阅读了答案,并感谢大家,但是我需要在这个大arrays上多次做这样的过滤操作,不仅仅是一次。 那么每次最好的方法是一个接一个迭代呢?
我正在研究在这个链接上使用RED-BLACK_TREE数据结构的CFS的调度algorithmhttp://www.ibm.com/developerworks/linux/library/l-completely-fair-scheduler 我的问题是:在CFS中使用红黑树的目的是什么,为什么不能使用AVL树。
我希望你能帮助我解决以下问题。 我有24个目录,每个目录包含许多(1000年)的文件。 我想找出哪些组合的目录包含最多的重复(仅限名称)文件。 例如,如果我们只考虑4个目录 dir1 dir2 dir3 dir4 与以下目录内容 DIR1 1.fa 2.fa 3.fa 4.fa 5.fa DIR2 1.fa 10.fa 15.fa DIR3 1.fa 2.fa 3.fa dir4 1.fa 2.fa 3.fa 5.fa 8.fa 10.fa 因此,目录dir1和dir4的组合包含最多的重复文件(4)。 问题变得非常大,24个目录,所以我想我可能会使用暴力的方法。 东西沿线 统计所有24个目录中出现的所有重复文件 删除一个目录并计算重复文件的数量 replace目录并放下另一个然后计数 重复所有目录 获得23个目录的子集与最大数量的重复文件 重复上面的2-5,并保留22个目录与大多数重复的文件 重复,直到只剩下2个目录 select最大重复文件数量的目录组合 如果有人有这样做的话,我会非常感谢一些build议。 我想使用fdupes或diff但不能弄清楚如何parsing输出和总结。
这是一个面试问题:假设你有一个无限量的sorting数据进来,实现一个方法来find一个特定的时间戳。 我能想到的是将数据保存在一个日志文件或类似的东西,并使用sed命令来查找该特定时间戳的日志条目。 我不知道我的想法是否正确。 其他解决scheme
在unix中进行validation的crypt函数如下所示: char *crypt(const char *key, const char *salt); 假设我有长度为n的key ,长度为m的salt ,调用这个函数的时间复杂度(algorithm的顺序)是多less?