<?php
header("Content-Type:text/html;charset=utf-8");
class Test{
//冒泡排序为从小到大
public function bubbleSort($arr){
if(!is_array($arr)) return false;
if(count($arr) <= 1) return $arr;
for($i = 0;$i < count($arr);$i++){
$mark = 0;
for($j = 0;$j < count($arr) - $i-1;$j++){
if($arr[$j] > $arr[$j+1]){
$arr[$j] = $arr[$j] + $arr[$j+1];
$arr[$j+1] = $arr[$j] - $arr[$j+1];
$arr[$j] = $arr[$j] - $arr[$j+1];
$mark = 1;
}
}
if($mark == 0) break;
}
return $arr;
}
//快速排序为从小到大
public function quickSort($arr){
if(!is_array($arr)) return false;
if(count($arr) <= 1) return $arr;
$left = $right = array();
for($i=1;$i<count($arr);$i++){
if($arr[$i] < $arr[0]){
$left[] = $arr[$i];
}else{
$right[] = $arr[$i];
}
}
$arr = array_merge($left,array($arr[0]),$right);
if($left) return $this->quickSort($arr);
return $arr;
}
//直接插入排序为从小到大
public function insertSort($arr){
if(!is_array($arr)) return false;
if(count($arr) <= 1) return $arr;
$arr1[] = $arr[0];
for($i = 1 ; $i < count($arr) ; $i++){
for($j = count($arr1) - 1 ; $j >= 0 ; $j--){
if($arr1[$j] < $arr[$i]) break;
$arr1[$j+1] = $arr1[$j];
}
$arr1[$j+1] = $arr[$i];
}
return $arr1;
}
}
$test = new Test();
$arr = array();
for($i = 0;$i<2000;$i++){
$arr[$i] = rand(0,100000);
}
$time1 = microtime(true);
$test->bubbleSort($arr);
$time2 = microtime(true);
echo '耗时'.($time2*1000-$time1*1000).'毫秒';
echo '<br />';
$time1 = microtime(true);
$test->quickSort($arr);
$time2 = microtime(true);
echo '耗时'.($time2*1000-$time1*1000).'毫秒';
echo '<br />';
$time1 = microtime(true);
$test->insertSort($arr);
$time2 = microtime(true);
echo '耗时'.($time2*1000-$time1*1000).'毫秒';
运行结果:
耗时5249.3747558594毫秒
耗时50.65185546875毫秒
耗时327.828125毫秒