关于 in 关键字的效率问题 找qq软件管理
进销存软件版1楼: if i in [1..250] then
想问一下,上面这语句的效率问题,这样使用效率是否太低?
它使用了 in 关键字,不知道 Delphi 判断“ i in [1..250] ”这一句的值的原理,不会是先判断 i 是否等于1,再判断是不是等于2......
如果是我想这样的话,效率就太低了。
高手们指点一下!
想问一下,上面这语句的效率问题,这样使用效率是否太低?
它使用了 in 关键字,不知道 Delphi 判断“ i in [1..250] ”这一句的值的原理,不会是先判断 i 是否等于1,再判断是不是等于2......
如果是我想这样的话,效率就太低了。
高手们指点一下!
2楼: [1..250] 是有序的,按道理应该是用黄金分割法。 如qq软件管理
3楼: low = 1; high = ST.length; // 置区间初值
while (low <= high) {
mid = (low + high) / 2;
if (EQ (key , ST.elem[mid].key) )
return mid; // 找到待查元素
else if ( LT (key , ST.elem[mid].key) )
high = mid - 1; // 继续在前半区间进行查找
else low = mid + 1; // 继续在后半区间进行查找
}
4楼: 对于这种有序的数据,DELPHI肯定是用折半快速查询的算法,效率是最高的.
5楼: In 是位操作,快的很。这个指令Delphi编译出来不会有循环,只会有一条汇编指令。
6楼: [:O]
进销存软件版7楼: 谢谢各位!