标题:二分查找 假定查找序列是有序的整数
只看楼主
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
结帖率:59.52%
 问题点数:0 回复次数:0 
二分查找 假定查找序列是有序的整数
墨迹了半天也没办法记住所有的语法  只好学以致用了,用来写个计算题 很屈perl
#!/usr/bin/perl -w
@rock=<STDIN>;
$max=<STDIN>;
$i=0;$j=$#rock;$m=0;
while($i<$j){
    if($max==$rock[0]){$m=0;print "Find!it is in 1 position!";last;}
    if($max==$rock[-1]){$m=$#rock;print "Find!it is in last position!";last;}
    $m=($i+$j)/2;
    if($max<$rock[$m]){
        $j=$m;
    }
    else{
        if($max==$rock[$m]){$m+=1;print "Find! it is in $m position";last;}
        if($max<$rock[$m+1]){last;}
        if($max==$rock[$m+1]){$m+=2;print "Find! it is in $m position";last;}
        $i=$m+1;
    }
}      
if($rock[$m]!=$max){print "the finder it is not in arrary";}
#1.判断要查找的数据是否在首尾  如果是 找到
#2.如果不是 则将查找序列一分为二,比较中间元素,如果小于则 尾巴变为中间元素的位置    如果不小于 则比较 中间元素和中间元素加1的元素 如果从中找到了相等的 那么找到了元素
#  如果不等且查找元素是小于中间元素的下一个元素则表示未找到
#  如果以上都不成立则表示查找元素是处在 中间元素的另一个区间的 那么叫头变成中间元素+1的地方
#重复上面的过程


[ 本帖最后由 zhu224039 于 2014-6-10 18:12 编辑 ]
搜索更多相关主题的帖子: position rock 
2014-06-10 17:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-432745-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.066503 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved