Chinaunix首页 | 论坛 | 博客
  • 博客访问: 601112
  • 博文数量: 129
  • 博客积分: 8026
  • 博客等级: 中将
  • 技术积分: 1300
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-21 14:39
文章分类

全部博文(129)

文章存档

2011年(1)

2007年(26)

2006年(102)

我的朋友

分类:

2006-06-05 13:16:24

最近在看java的数据结构和算法,于是把其中的几种基本排序算法用php写了一遍:

set_time_limit(0);
//冒泡
function bubble($arr){
 for($i = 0; $i < count($arr); $i++){
        for($j = count($arr)-1; $j > $i; $j--){
            if($arr[$j] < $arr[$j-1]){
    $temp = $arr[$j];
    $arr[$j] = $arr[$j-1];
    $arr[$j-1] = $temp;
            }
        }
 }
 return $arr;
}
//选择
function select($arr){
  for ($i = 0; $i < count($arr); $i++) {
  $lowIndex = $i;
  for ($j = count($arr) - 1; $j > $i; $j--) {
            if ($arr[$j] < $arr[$lowIndex]) {
                $lowIndex = $j;
            }
        }
  $temp = $arr[$lowIndex];
  $arr[$lowIndex] = $arr[$j];
  $arr[$j] = $temp;
    }
 return $arr;
}

//插入
function insert($arr){
 for($i = 1;$i < count($arr); $i++){
  for($j = $i; ($j>0) && ($arr[$j] < $arr[$j-1]); $j--){
   $temp = $arr[$j-1];
   $arr[$j-1] = $arr[$j];
   $arr[$j] = $temp;
  }
 }
 return $arr;
}
$arr = range(1,1000);
shuffle($arr);
//benchmark
require_once("Benchmark/Timer.php");
$timer = new Benchmark_Timer();
$timer -> start();
bubble($arr);
$timer -> setMarker('bubble');
select($arr);
$timer -> setMarker('select');
insert($arr);
$timer -> setMarker('insert');
sort($arr);
$timer -> setMarker('php');
$timer -> display();
?>

运行结果是:

 

由上图可以看出:

对一个有一千个元素的数组排序,三种算法中,选择排序是最快的,再就是插入,冒泡最差,但是三种都跟php内置的数组排序有着具大的差距

阅读(770) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~