山那边是海 发表于 2015-2-4 00:09:57

PHP教程之【数据布局】PHP完成查找表

就是管理员可以编辑,删除,回复 等功能,。加入管理员功能要加入登陆系统,慢慢你会想在线添加管理员,慢慢你会让自己的作品更漂亮些,慢慢1个完整的留言板就会出来了,数据|数据布局   【根基算法】
假定有一个数组,需求找出某个值在该数组中的地位。
<?
//二分查找
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;
    }
}
?>

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

怎么培养啊 别光说不练啊,好 ,比如新人入门自己步是配置环境,虽然现在都有很多的集成环境,但是真实的体验下配置环境还是会有很多帮助,不论是你以后工作还是在真实的linux下开发。

变相怪杰 发表于 2015-2-4 09:45:21

建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。

灵魂腐蚀 发表于 2015-2-6 20:44:52

作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。

小女巫 发表于 2015-2-13 21:52:18

兴趣是最好的老师,百度是最好的词典。

分手快乐 发表于 2015-3-1 02:19:35

其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。

兰色精灵 发表于 2015-3-10 12:05:55

为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。

爱飞 发表于 2015-3-12 14:53:28

作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。

精灵巫婆 发表于 2015-3-19 23:04:33

我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。

莫相离 发表于 2015-4-1 20:23:54

微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。

再见西城 发表于 2015-4-1 21:11:21

如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,

老尸 发表于 2015-4-15 16:00:08

真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,

飘飘悠悠 发表于 2015-4-26 23:10:01

本文当是我的笔记啦,遇到的问题随时填充

金色的骷髅 发表于 2015-5-6 10:10:51

说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。

再现理想 发表于 2015-5-12 09:07:16

学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。

飘灵儿 发表于 2015-6-13 19:30:35

建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。

乐观 发表于 2015-6-27 20:21:04

不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。

不帅 发表于 2015-7-7 14:56:47

最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。

若天明 发表于 2015-7-10 22:37:17

我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。

谁可相欹 发表于 2015-7-15 09:20:45

如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,

只想知道 发表于 2015-7-22 14:37:53

我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
页: [1]
查看完整版本: PHP教程之【数据布局】PHP完成查找表