仓酷云

标题: PHP编程:PHP完成查找表 [打印本页]

作者: 分手快乐    时间: 2015-2-4 00:13
标题: PHP编程:PHP完成查找表
你发奋努力,熟悉了安全方面的问题,然后又设计了一些程序,感觉还不错。   【根基算法】
假定有一个数组,需求找出某个值在该数组中的地位。
<?
//二分查找
function bin_sch($array, $low, $high, $k){
    if ($low <= $high){
        $mid = intval(($low+$high)/2);
        if ($array[$mid] == $k){
            return $mid;
        }elseif ($k < $array[$mid]){
            return bin_sch($array, $low, $mid-1, $k);
        }else{
            return bin_sch($array, $mid+1, $high, $k);
        }
    }
    return -1;
}

//按次查找
function seq_sch($array, $n, $k){
    $array[$n] = $k;
    for($i=0; $i<$n; $i++){
        if($array[$i]==$k){
            break;
        }
    }
    if ($i<$n){
        return $i;
    }else{
        return -1;
    }
}

?>
测试代码:
array.txt 文件外面包括了一百万条相似 2,3,4,5 如许的数据,上面经由过程按次查找和二分查找来肯定速度。


//二分查找
<?php
set_time_limit(0);
$array = array();
$file = file_get_contents("./array.txt");
$array = explode(",", $file);
sort($array);
$st = time();
$k = 43;  
$n = count($array);
$r = bin_sch($array, 0, $n-1, $k);
$et = time();
$t = $et-$st;
echo "Process time: ". $t ."/s";
?>
以上输入: Process time: 0/s
//按次查找
<?php
set_time_limit(0);
$array = array();
$file = file_get_contents("./array.txt");
$array = explode(",", $file);
$st = time();
$k = 43;  
$n = count($array);
$r = seq_sch($array, $n, $k);  
$et = time();
$t = $et-$st;
echo "Process time: ". $t ."/s";
?>
以上输入了局:Process time: 9/s

下面等闲就可以够看出谁的效力高了。

【算法改善】
<?
//二分查找(递归消弭)
function bin_sch($array, $n, $k){
    $low = 0;
    $high = $n-1;
    while($low <= $high){
        $mid = intval(($high-$low)/2);
        if ($array[$mid] == $k)
            return $mid;
        elseif ($k < $array[$mid]){
            $high = $mid - 1;
        }else{
            $low = $mid + 1;
        }
    }
    return -1;
}
//按次查找(改善版)
function seq_sch($array, $n, $k){
    $array[$n] = $k;
    for($i=0; ; $i++){
        if($array[$i]==$k){
            break;
        }
    }
    if ($i<$n){
        return $i;
    }else{
        return -1;
    }
}
?>

能看出下面两个函数做了甚么改动吗?效力提拔了几何?

通过这段时间的学习实践,对软件开发有了更多新的认识,不在局限于之前的片面性。当然,现在所学到的东西其实并不多,离当一个真正的程序员,还有很大的差距。
作者: 山那边是海    时间: 2015-2-4 09:59
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
作者: 灵魂腐蚀    时间: 2015-2-6 16:57
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
作者: 若相依    时间: 2015-2-9 23:59
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
作者: 精灵巫婆    时间: 2015-2-10 12:27
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
作者: 冷月葬花魂    时间: 2015-2-11 14:51
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
作者: 仓酷云    时间: 2015-2-11 21:07
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
作者: 老尸    时间: 2015-2-24 21:47
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
作者: 活着的死人    时间: 2015-3-7 13:31
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
作者: 海妖    时间: 2015-3-11 17:25
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
作者: 再现理想    时间: 2015-3-12 16:36
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
作者: 第二个灵魂    时间: 2015-3-14 11:42
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者: 不帅    时间: 2015-3-15 06:11
实践是检验自己会不会的真理。
作者: 飘飘悠悠    时间: 2015-3-21 18:58
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
作者: admin    时间: 2015-3-24 04:39
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
作者: 分手快乐    时间: 2015-4-4 11:43
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
作者: 兰色精灵    时间: 2015-4-5 17:39
爱上php,他也会爱上你。
作者: 再见西城    时间: 2015-4-7 12:55
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
作者: 小女巫    时间: 2015-4-7 14:51
做为1门年轻的语言,php一直很努力。
作者: 小魔女    时间: 2015-4-10 03:37
实践是检验自己会不会的真理。
作者: 若天明    时间: 2015-4-18 01:27
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2