本文汇总了常见的php排序算法和查找并进行了销量的对比,在进行算法设计的时候有不错的借鉴价值。现分享给大家供参考之用。具体如下:
PHP冒泡排序法
$arr=array();
for($i=0;$i<10000;$i++){
$arr[] = mt_rand(1,100000);
}
$t1 = microtime(true);
//这是一个中间变量
$temp=0;
//我们要把数组,从小到大排序
//外层循环
$flag=false;//这个优化之后效率会很高,一般够用
for($i=0;$i<count($arr)-1;$i++){
for($j=0;$j<count($arr)-1-$i;$j++){
//说明前面的数比后面的数大,就要交换
if($arr[$j]>$arr[$j+1]){
$temp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
$flag=true;
}
}
if(!$flag){
//已经是有序了
break;
}
$flag=false;
}
$t2 = microtime(true);
echo $t2 -$t1;算法部分代码平均运行时间11.246428012848
PHP选择排序法
效率比冒泡要高
$arr=array();
for($i=0;$i<10000;$i++){
$arr[] = mt_rand(1,100000);
}
$t1 = microtime(true);
//这是一个中间变量
$temp=0;
for($i=0;$i<count($arr)-1;$i++){
//假设$i就是最小的数
$minVal=$arr[$i];
//记录我认为的最小数的下标
$minIndex=$i;
for($j=$i+1;$j<count($arr);$j++){
//说明我们认为的最小值,不是最小
if($minVal>$arr[$j]){
$minVal=$arr[$j];
$minIndex=$j;
}
}
//最后交换
$temp=$arr[$i];
$arr[$i]=$arr[$minIndex];
$arr[$minIndex]=$temp;
}
$t2 = microtime(true);
echo $t2 -$t1; 算法部分代码平均运行时间 6.1832849979401
插入排序法(小到大排序)
效率又比 选择排序法要高一些
$arr=array();
for($i=0;$i<10000;$i++){
$arr[] = mt_rand(1,100000);
}
$t1 = microtime(true);
//先默认下标为0的这个数已经是有序
for($i=1;$i<count($arr);$i++){
//$insertVal是准备插入的数
$insertVal=$arr[$i];
//准备先和谁下标为$inserIndex的比较
$inserIndex=$i-1;
//如果这个条件满足,说明我们还没有找到适当的位置
while($inserIndex >= 0 && $insertVal < $arr[$inserIndex]){
//同时把数后移
$arr[$inserIndex+1] = $arr[$inserIndex];
$inserIndex--;
}
//插入(这时就给$inserIndex找到适当的位置)
$arr[$inserIndex+1] = $insertVal;
}
$t2 = microtime(true);
echo $t2 -$t1; 算法部分代码平均运行时间 2.6323339939117