我的程序将在时间和空间上相互竞争不同的排序算法.我有空间,但测量时间给我带来了一些麻烦.以下是运行排序的代码:
void test(short* n, short len) {
short i, j, a[1024];
for(i=0; i<2; i++) { // Loop over each sort algo
memused = 0; // Initialize memory marker
for(j=0; j<len; j++) // Copy scrambled list into fresh array
a[j] = n[j]; // (Sorting algos are in-place)
// ***Point A***
switch(i) { // Pick sorting algo
case 0:
selectionSort(a, len);
case 1:
quicksort(a, len);
}
// ***Point B***
spc[i][len] = memused; // Record how much mem was used
}
}
Run Code Online (Sandbox Code Playgroud)
(为简单起见,我删除了一些排序算法) …
我正在编写一个Lisp程序来使用Spigot算法来近似pi,该算法一次找到一个数字而不需要先前计算的任何数字.这个:

假设一次只输入一个十六进制数字,但是测试它我们有连续调用(迭代i)产生Lisp众所周知的分数:
2F/F 6A/333 33D/4CB3 13C/3B79
等等.这是使用带有~x参数的格式函数实现的:
(format t "~x" [some number])
Run Code Online (Sandbox Code Playgroud)
或者,
(format t "~d" [some number])
Run Code Online (Sandbox Code Playgroud)
产生基数10位小数:
3.1333334 0.12942614 0.042220525 0.020755336
但是我想要十六进制的小数,例如,如果一轮产生0.5,那么我想要0.8; 如果基数10是0.75,那么我想要0.C. 这样我就可以分别计算出pi的每个十六进制数字,这是我选择这个Spigot算法的原因.我也可以使用表格的一小部分(n/16 ^ k),因为这可以很容易地转换成十六进制小数.
这可能吗?