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 ......
40条优化php代码的小实例
1.如果一个方法能被静态,那就声明他为静态的,速度可提高1/4;
2.echo的效率高于print,因为echo没有返回值,print返回一个整型;
3.在循环之前设置循环的最大次数,而非在在循环中;
4.销毁变量去释放内存,特别是大的数组;
5.避免使用像__get, __set, __autoload等魔术方法;
6.requiere_once( ......
<?php
//GB2312的Encode
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
/*重点了解strtotime()函数
1、strftime比time()好用,可以直接把常用的’2010-02-03‘转成时间戳。
2、date( ......