最近在看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内置的数组排序有着具大的差距
阅读(793) | 评论(0) | 转发(0) |