关于 in 关键字的效率问题(50分)

  • 主题发起人 主题发起人 liyinwei
  • 开始时间 开始时间
L

liyinwei

Unregistered / Unconfirmed
GUEST, unregistred user!
if i in [1..250] then
想问一下,上面这语句的效率问题,这样使用效率是否太低?
它使用了 in 关键字,不知道 Delphi 判断“ i in [1..250] ”这一句的值的原理,不会是先判断 i 是否等于1,再判断是不是等于2......
如果是我想这样的话,效率就太低了。
高手们指点一下!
 
[1..250] 是有序的,按道理应该是用黄金分割法。
 
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
// 继续在后半区间进行查找

}
 
对于这种有序的数据,DELPHI肯定是用折半快速查询的算法,效率是最高的.
 
In 是位操作,快的很。这个指令Delphi编译出来不会有循环,只会有一条汇编指令。
 
谢谢各位!
 
后退
顶部