PHP数据结构——冒泡排序与快速排序的比较
//冒泡排序(数组中实现)
function bubble_sort($arr) {
$cnt = count($arr);
if($cnt<=0) return false;
for($i=0; $i<$cnt;$i++) {
for($j=$cnt-1; $j>$i;$j--) {
if($arr[$j]<$arr[$j-1]) {
$tmp = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1]=$tmp;
}
}
}
return $arr;
}
//快速排序(数组排序)
function quicksort($arr) {
if(count($arr)<=1) return $arr;
$key = $arr[0];
$left_arr = array();
$right_arr = array();//新建一个数组
for($i=1; $i<count($arr); $i++) {
if($arr[$i]<$key) {
$left_arr[] = $arr[$i];
} else {
$right_arr[] = $arr[$i];
}
}
$left_arr = quicksort($left_arr);
$right_arr = quicksort($right_arr);
return array_merge($left_arr,array($key),$right_arr);
}
for($i=0;$i<10000;$i++) {//测试数组
$arr1[$i] = rand(0,10000);
}
$time_start = explode(" ",microtime());
bubble_sort($arr1);
$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());
quicksort($arr1);
$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());
sort($arr1);//php内置对数组排序函数
$time_end = explode(" ", microtime());
echo "PHP内置函数排序法所需要的时间:";
echo ($time_end[0]+$time_end[1] - $time_start[0]-$time_start[1])."<br>";//测试PHP内置函数排序法所需要的时间
测试结果:
冒泡排序法所需要的时间:22.864297151566
----------------------------------
快速排序法所需要的时间:0.22899389266968
--------
相关文档:
<?php
/*
* 名称 : MySQL数据库基本操作
* 作者 : pjx
* 版本 : v 2010/02/25 v 1.0
* 说明 : 该类用于对MySQL做一些简单的操作
* 示例 :
* 实例 => $db = new DB_MYSQL($database),打个$database数据库
* 查询数据库 => $db->query($sql_str),查询$sql_st ......
<FORM METHOD=POST ACTION="#">
<INPUT TYPE="text" NAME="name">
<INPUT TYPE="submit" value="query" name="sub">
</FORM>
<?php
function getinitial($str)
{
$asc=ord(substr($str,0,1)); //ord()获取ASCII
if ($asc<160) //非中文
{
if ($asc>=48 ......
0、用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么
做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。
1、如果能将类的方法定义成static,就 ......
PHP 序列化(serialize)格式详解
前言
概述
NULL 和标量类型的序列化
简单复合类型的序列化
嵌套复合类型的序列化
自定义对象序列化
Unicode 字符串的序列化
参考文献
1.前言
PHP (从 PHP 3.05 开始)为保存对象提供了一组序列化和反序列化的函数:serialize、unserialize。不过在
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<$ ......