40得票26回答
快速算法:将大小为N的数组进行圆形移位,移动M个位置。

什么是移位M个位置的圆形数组的最快算法? 例如,[3 4 5 2 3 1 4] 移动 M = 2 个位置应该是 [1 4 3 4 5 2 3]。 非常感谢。

23得票1回答
取模运算符为什么速度较慢?

从《编程珠玑》一书中改述(关于旧机器上的c语言,因为该书出自90年代末): 整数算术运算(+、-、*)大约需要10纳秒的时间,而%运算符最多需要100纳秒的时间。 为什么差别这么大? 模运算符在内部是如何工作的? 它和除法(/)在时间上是否相同?

13得票2回答
"Programming Pearls" 二分查找帮助

我就是无法理解这个算法是如何工作的。 问题: 给定一个包含最多40亿个32位整数的顺序文件(乱序),找到一个不在文件中的32位整数(必须至少有一个缺失) 答案: 从代表每个整数的32位中的角度来看,将这个二分查找视为有帮助的。在算法的第一次遍历中,我们读取(最多)四十亿个输入整数,并将带有...

12得票10回答
如何在O(nlogn)的时间复杂度内找到和最接近零或特定值t的子数组

实际上,这是《编程珠玑》第二版第8章的第10个问题。它提出了两个问题:给定一个整数数组A[](正数和非正数),如何找到一个连续的子数组,其和最接近0?或最接近某个值t? 我能想到一种解决最接近0问题的方法。计算前缀和数组S[],其中S[i] = A[0]+A[1]+...+A[i]。然后按照...

11得票6回答
这个位排序代码中的位操作如何工作?

Jon Bentley在他的书《编程珠玑》第1列中介绍了一种使用位向量对非零正整数序列进行排序的技术。 我从这里获取了程序bitsort.c,并将其粘贴如下:/* Copyright (C) 1999 Lucent Technologies */ /* From 'Programming P...

11得票4回答
Python中寻找最长重复字符串的高效方法(来自《编程珠玑》)

来自《编程珠玑》第15.2节 这里可以查看C代码:http://www.cs.bell-labs.com/cm/cs/pearls/longdup.c 当我使用后缀数组在Python中实现时:example = open("iliad10.txt").read() def comlen(p...

8得票4回答
编程珠玑:找出至少出现两次的整数

这个问题出现在第2.6节和第2个问题中,原始问题如下: “给定一个包含4,300,000,000个32位整数的顺序文件,如何找到至少出现两次的整数?” 对于这个练习,我的问题是:上述问题有什么技巧,这个问题属于哪种常见算法类别?

7得票2回答
在下面的编程珠玑示例程序中使用了位掩码,请问它是如何使用的?

我今天开始阅读《编程珠玑》这本书,在做练习时遇到了这个问题:“你会如何实现自己的位向量?” 当我看到解决方案时,它是这样的: #define BITSPERWORD 32 #define SHIFT 5 #define MASK 0x1F #define N 10000000 int a[...