原帖由 疯长的野草 于 2007-5-24 09:39 发表
时间复杂度不是常数?什么是实践复杂度啊
原帖由 heavyrain44 于 2007-5-24 09:03 发表
我想请教一个算法,有一无符号32位整数,求其右边第一位数起到第一个位为‘1’的0的个数。
如0x21c534a8,则返回3;0x1b94a4c0,则返回6。
用循环好做,但时间复杂度不是常数。有时间复杂度为常数的算法吗,谢谢 ...
原帖由 DraculaW 于 2007-5-24 10:25 发表
-@- 孩子 好好看书 好好看书 了解下常数的意义
如果你要全部都一样的速度
那么就应该用一个表 然后查表
那肯定是一个常数
就是这个表比较恐怖的大了
原帖由 heavyrain44 于 2007-5-24 09:03 发表
我想请教一个算法,有一无符号32位整数,求其右边第一位数起到第一个位为‘1’的0的个数。
如0x21c534a8,则返回3;0x1b94a4c0,则返回6。
用循环好做,但时间复杂度不是常数。有时间复杂度为常数的算法吗,谢谢 ...
原帖由 SuperZ 于 2007-5-27 23:48 发表
这个就要看你在什么机器上跑了,有些机器比较怪异,直接就有这样的指令。
原帖由 improgrammer 于 2007-5-28 11:26 发表
回字有几种写法……
原帖由 emacsnw 于 2007-5-24 15:48 发表
二分:
[code]
int ntz(unsigned x) {
int n;
if (x == 0) return(32);
n = 1;
if ((x & 0x0000FFFF) == 0) {n = n +16; x = x >>16;}
if ((x & 0x000000FF) == 0) { ...
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |