gouweicao78 发表于 2007-5-16 13:00 
QUOTE:以下是引用yjgsz在2007-5-16 7:11:34的发言:我想说,二分法的基本原理,是不是还适用。1、数列按升序 ...
QUOTE:
以下是引用yjgsz在2007-5-16 7:11:34的发言:
我想说,二分法的基本原理,是不是还适用。 1、数列按升序排序(或“视升序排序”)——这一点在前面我已经说明很多次了,理解是一致的。 2、每次先取中间位置值比较,中间位置=int((首位数位置+末位数位置)/2)——理解是一致的。 3、数列中每个数值不会被重复查找,即不会被查找第二次。——这一点你严格按二分法,Lookup不严格按二分法,所以我说只是一个“主流方向”并不代表完全。 4、每次收敛范围是上次收敛范围的子集。——基本一致,但Lookup有例外判断,与第3点同,Lookup不严格按二分法。
这是陈版主的回复。
对于“二分法”,我的直观理解是:
在输供电系统中,如何判断一条输电线在哪里断路。
办法:先从一头到线路中间测量,如果不通则断路位置在这半截里面;如果通路,则断路位置在另外半截。依此类推。
根据我的这个例子再来看二分法的基本原则:
1、数列按升序排序(或“视升序排序”)——这点如何在输供电系统中体现?(线路中不能出现并联情况?)
2、每次先取中间位置值比较,中间位置=int((首位数位置+末位数位置)/2)——这点是肯定的。
3、数列中每个数值不会被重复查找,即不会被查找第二次——当然不需要查第2次
4、每次收敛范围是上次收敛范围的子集——这不一定,如果断路的位置不在这次收敛的范围之内,下一次收敛就不是上次收敛范围的子集了。
|