算法学习-中篇(持续更新)

xiaoxiao2021-02-28  122

本文汇总了常见的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
转载请注明原文地址: https://www.6miu.com/read-36850.html

最新回复(0)