喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 帮助

RSS 订阅当前论坛  

喜悦证交所已经关闭

上一主题 下一主题
 25  1/3  1  2  3  > 
     
标题: [讨论] 寻求Google高效的索引算法~~想破头皮还没搞定..  
 
风在芯中
金牌会员
Rank: 6Rank: 6
kuliu.com



UID 25808
精华 0
积分 2548
帖子 716
金钱 2548 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2004-1-19
来自 福建 福州
状态 离线
寻求Google高效的索引算法~~想破头皮还没搞定..

010010001001000011000010011000001001000011000010

如何高效的得出上面串中所有1所在的位置??这个串可能很长,,然道只能一个个位去判断?


上面的串,算出的结果应该是
2,5,9,12.......

google相关文档
http://www.googlechinablog.com/2006/05/blog-post_10.html

[ 本帖最后由 风在芯中 于 2007-10-14 05:09 PM 编辑 ]




酷溜网
2007-10-14 04:53 PM#1
查看资料  访问主页  Blog  发短消息  顶部
 
why0813 (歪歪)
高级会员
Rank: 4
低调,低调。


UID 31734
精华 0
积分 752
帖子 1603
金钱 752 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2004-10-9
来自 猎户座第七行星
状态 离线
[推荐阅读] 怎么把数据库中的超链接输出
回复 #1 风在芯中 的帖子

一个一个位判断有啥不好?

<?php
$a
='010010001001000011000010011000001001000011000010';
$num=strlen($a);
for(
$i=0;$i<$num;$i++){
    if(
$a[$i]=='1'){$b.='|'.$i.'|';}
}
echo 
$b;
?>
[ 本帖最后由 why0813 于 2007-10-14 05:14 PM 编辑 ]





phpx聚会群:9106264 | 牛人们都聚集与此

高级群,大品牌,高手众多,200人大群,空位有限,莫犹豫!

2007-10-14 05:13 PM#2
查看资料  访问主页  发短消息  QQ . .   顶部
 
风在芯中
金牌会员
Rank: 6Rank: 6
kuliu.com



UID 25808
精华 0
积分 2548
帖子 716
金钱 2548 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2004-1-19
来自 福建 福州
状态 离线
[推荐阅读] window.init.innerHTML=str+'<br>';这段代码在firefox下面怎么改写呢?
这个串会非常的长,,所以想,有没有高效的算法



酷溜网
2007-10-14 05:22 PM#3
查看资料  访问主页  Blog  发短消息  顶部
 
nombx
注册会员
Rank: 2



UID 75455
精华 0
积分 100
帖子 68
金钱 100 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-24
状态 离线
[推荐阅读] 免费PHP空间,谁有兴趣开发虚拟主机系统
可以考虑把它分块,方在若刚个索引表里面,
然后分段查找,把结果放在一个索引表,或者二维数组里面.
2007-10-14 05:54 PM#4
查看资料  访问主页  发短消息  QQ . .   顶部
 
喜悦村支书
中级会员
Rank: 3Rank: 3


UID 82061
精华 0
积分 210
帖子 258
金钱 210 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2006-10-23
状态 离线
[推荐阅读] 问一个有关APC的问题!
位运算.很容易.
2007-10-14 08:17 PM#5
查看资料  发短消息  顶部
 
蟋蟀
版主
Rank: 7Rank: 7Rank: 7
村里巡逻队长


UID 67242
精华 0
积分 2036
帖子 1763
金钱 2036 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2005-12-17
来自 福建
状态 离线
[推荐阅读] 李宇春最新亮照
$str = "010010001001000011000010011000001001000011000010";
$i = 0;
while ($str[$i] != NULL)
{
    if ($str[$i++] == "1") $a[] = $i;
    if ($str[$i++] == "1") $a[] = $i;
    if ($str[$i++] == "1") $a[] = $i;
    if ($str[$i++] == "1") $a[] = $i;
}

这样应该快很多.




吉林php群
27089230
2007-10-15 09:04 AM#6
查看资料  Blog  发短消息  QQ . .   顶部
 
风在芯中
金牌会员
Rank: 6Rank: 6
kuliu.com



UID 25808
精华 0
积分 2548
帖子 716
金钱 2548 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2004-1-19
来自 福建 福州
状态 离线
[推荐阅读] 百度地址栏中参数的含义
楼上的运行时间差不多在  

0.00010

0.00011

之间


而一个一个位判断的运算时间差不多在

0.00011

0.00012


需要处理的串设置长一些,蟋蟀的程序会快挺多




酷溜网
2007-10-15 10:24 AM#7
查看资料  访问主页  Blog  发短消息  顶部
 
bxhcsz
新手上路
Rank: 1



UID 92095
精华 0
积分 49
帖子 47
金钱 49 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-4-27
状态 离线
[推荐阅读] 一个http的问题
<?php
/* 该函数返回字符串s1在字符串s2中第一次出现的位置.
      如果s2中不包含s1,则返回0
*/
function InStr($s1, $s2)
{
       //检查参数是否是字符串格式,若不是则返回0
       if(!(is_string($s1) && is_string($s2))) return 0;

       $s1len = strlen($s1);
       $s2len = strlen($s2);

       //检查s1是否包含在s2中
       if(!ereg($s1, $s2)) return 0;

       //若s1s2精确匹配,返回1
       if($s1 == $s2) return 1;

       //设置搜索范围$begin-$end
       $begin = 0;
       $end = $s2len - $s1len;

       //初始化位置
       $position = 0;
       while($end > $begin + 1)
       {
           $middle = ceil(($begin + $end) / 2);
           $leftBegin = $begin;
           $rightBegin = $middle + $s1len;
           $leftEnd = $middle;
           $rightEnd = $end + $s1len;


           if(ereg($s1, substr($s2, $leftBegin, $rightBegin - $leftBegin)))
           {
               $end = $middle;
           }
           else //(ereg($s1, substr($s2, $leftEnd, $rightEnd - $leftEnd)))
           {
               $position += $middle - $begin;
               $begin = $middle;
           }
       }


       if(ereg($s1, substr($s2, $end, $s1len))) $position++;

       //返回第一次出现的位置
       return $position + 1;
}
echo instr("as","中国deah方法as");
?>




<?php新人,幻想在坛子里学到各位大牛的精髓,某天李彦宏请我出山,可我就不去.......
2007-10-15 02:53 PM#8
查看资料  Blog  发短消息  顶部
 
风在芯中
金牌会员
Rank: 6Rank: 6
kuliu.com



UID 25808
精华 0
积分 2548
帖子 716
金钱 2548 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2004-1-19
来自 福建 福州
状态 离线
[推荐阅读] base64_encode问题,这个问题很奇怪
楼上的好像没看贴哦



酷溜网
2007-10-15 04:23 PM#9
查看资料  访问主页  Blog  发短消息  顶部
 
xiejin8877
高级会员
Rank: 4


UID 74751
精华 0
积分 581
帖子 921
金钱 581 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2006-6-9
来自 上海
状态 离线
[推荐阅读] 1K多


QUOTE:
原帖由 蟋蟀 于 2007-10-15 09:04 AM 发表
$str = "010010001001000011000010011000001001000011000010";
$i = 0;
while ($str != NULL)
{
    if ($str == "1") $a[] = $i;
    if ($str == "1") $a[] = $i;
    if  ...
第一次知道字符串可以当数组用的.




我靠电影网
2007-10-15 05:35 PM#10
查看资料  发短消息  QQ . .   顶部
 25  1/3  1  2  3  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.025773 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP