PHP数据结构——二分查找与顺序查找
<?php
//--------------------
// 基本数据结构
//--------------------
//二分查找(数组里查找某个元素)
function bin_sch($arr, $low, $high, $k) {
if($low<=$high) {
$mid = intval(($low+$high)/2);
if($arr[$mid] == $k) {
return $mid;
} elseif($k<$arr[$mid]) {
return bin_sch($arr,$low,$mid-1,$k);
} elseif($k>$arr[$mid]) {
return bin_sch($arr,$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."The Element is here";
} else {
return '-1Sorry';
}
}
for($i=0;$i<1000000;$i++) {//测试数组
$arr1[$i] = $i+1;
}
$time_start = explode(" ",microtime());
seq_sch($arr1,1000000,895624);
$time_end = explode(" ", microtime());
echo "顺序查找法所需要的时间:";
echo ($time_end[0]+$time_end[1] - $time_start[0]-$time_start[1])."<br>";////测试顺序查找法所需要的时间
echo '----------------------------------——————'.'<br>';
$time_start = explode(" ",microtime());
bin_sch($arr1,0,999999,895624).'<br>';
$time_end = explode(' ', microtime());
echo "二分查找法所需要的时间:";
echo ($time_end[0]+$time_end[1] - $time_start[0]-$time_start[1]).'<br>';//测试二分查找法所需要的时间
?>
测试结果:
顺序查找法所需要的时间:0.36866903305054
----------------------------------
二分查找法所需要的时间:0.00011110305786133
在执行效率上二分查找法远大于顺序查找法
相关文档:
以前只弄过asp,最近有点兴趣来学下php,发现php比asp不是一般的功能强大。
刚开始偷了下懒,没有去php官网看帮助,英文的虽然看起来不难,但是还是习惯看中文,于是搜索了几篇有关php在iis上安装的文章,按照这些文章上的说明开始配置php。我就顶它个肺,配置起来问题千奇百怪,折腾了两天,也郁闷了两天。
得,索性看官 ......
<?php
/*
* 名称 : MySQL数据库基本操作
* 作者 : pjx
* 版本 : v 2010/02/25 v 1.0
* 说明 : 该类用于对MySQL做一些简单的操作
* 示例 :
* 实例 => $db = new DB_MYSQL($database),打个$database数据库
* 查询数据库 => $db->query($sql_str),查询$sql_st ......
0、用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么
做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。
1、如果能将类的方法定义成static,就 ......
PHP 序列化(serialize)格式详解
前言
概述
NULL 和标量类型的序列化
简单复合类型的序列化
嵌套复合类型的序列化
自定义对象序列化
Unicode 字符串的序列化
参考文献
1.前言
PHP (从 PHP 3.05 开始)为保存对象提供了一组序列化和反序列化的函数:serialize、unserialize。不过在
PHP 手册中对这两个函数的 ......
40条优化php代码的小实例
1.如果一个方法能被静态,那就声明他为静态的,速度可提高1/4;
2.echo的效率高于print,因为echo没有返回值,print返回一个整型;
3.在循环之前设置循环的最大次数,而非在在循环中;
4.销毁变量去释放内存,特别是大的数组;
5.避免使用像__get, __set, __autoload等魔术方法;
6.requiere_once( ......