|

楼主 |
发表于 2006-9-25 15:29:05
|
显示全部楼层
Post by Iambitious
对于这种应用,可以考虑用hash table来进行查找,会大大降低时间复杂度,还有就是cache对于二分查找是没有意义的。你的概率计算的不正确,对于n个数,另取一个数与n个数相等的概率为n/(你所能取所有数),对于一般的数任意的情况,此种概率几乎为0,而同样与n个数不相等的概率近似为1,所以搜索一次的时间复杂度为log(m*(n-m))/2,当m处于n个数的中间时,与正常的二分查找复杂度相同,否则要比原来的效率低。
以上的阐述都是建立在数据之间是独立无关的情况下,如果符合某种统计规律则不在成立。
分析得有道理。谢谢。顺便问一下,上面的式子 S,如果要估计的话,是不是这样:
- S
- = (n-1)/n^2 * sum_1^n log(i/n) + (n-1)/n log n + 1 / n
- ~ (n-1)/n * int_0^1 log x dx + (n-1)/n * log n + 1 / n
- ~ 2/n - 1 + (n-1)/n * log n
复制代码 |
|