仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1329|回复: 20
打印 上一主题 下一主题

[学习教程] PHP编程:PHP完成查找表

[复制链接]
分手快乐 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:13:29 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你发奋努力,熟悉了安全方面的问题,然后又设计了一些程序,感觉还不错。   【根基算法】
假定有一个数组,需求找出某个值在该数组中的地位。
<?
//二分查找
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;
    }
}
?>

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

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

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 02:52

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表