PHP实现四种基础排序算法的运行时间比较(推荐)
许多人都说算法是程序的核心,算法的好坏决定了程序的质量。作为一个初级phper,虽然很少接触到算法方面的东西。但是对于基本的排序算法还是应该掌握的,它是程序开发的必备工具。下面通过本文给大家介绍PHP实现四种基础排序算法的运行时间比较,一起看下吧。
废话不多说了,直接给大家贴代码了。
具体代码如下所示:
/**
*php四种基础排序算法的运行时间比较
*@authorsJesse(jesse152@163.com)
*@date2016-08-1107:12:14
*/
//冒泡排序法
functionbubbleSort($array){
$temp=0;
for($i=0;$i<count($array)-1;$i++){
for($j=0;$j<count($array)-1-$i;$j++){
if($array[$j]>$array[$j+1]){//从小到大排列
$temp=$array[$j];
$array[$j]=$array[$j+1];
$array[$j+1]=$temp;
}
}
}
}
//选择排序法
functionselectSort($array){
$temp=0;
for($i=0;$i<count($array)-1;$i++){
$minVal=$array[$i];//假设$i就是最小值
$minValIndex=$i;
for($j=$i+1;$j<count($array);$j++){
if($minVal>$array[$j]){//从小到大排列
$minVal=$array[$j];//找最小值
$minValIndex=$j;
}
}
$temp=$array[$i];
$array[$i]=$array[$minValIndex];
$array[$minValIndex]=$temp;
}
}
//插入排序法
functioninsertSort($array){//从小到大排列
//先默认$array[0],已经有序,是有序表
for($i=1;$i<count($array);$i++){
$insertVal=$array[$i];//$insertVal是准备插入的数
$insertIndex=$i-1;//有序表中准备比较的数的下标
while($insertIndex>=0&&$insertVal<$array[$insertIndex]){
$array[$insertIndex+1]=$array[$insertIndex];//将数组往后挪
$insertIndex--;//将下标往前挪,准备与前一个进行比较
}
if($insertIndex+1!==$i){
$array[$insertIndex+1]=$insertVal;
}
}
}
//快速排序法
functionquickSort($array){
if(!isset($array[1]))
return$array;
$mid=$array[0];//获取一个用于分割的关键字,一般是首个元素
$leftArray=array();
$rightArray=array();
foreach($arrayas$v){
if($v>$mid)
$rightArray[]=$v;//把比$mid大的数放到一个数组里
if($v<$mid)
$leftArray[]=$v;//把比$mid小的数放到另一个数组里
}
$leftArray=quickSort($leftArray);//把比较小的数组再一次进行分割
$leftArray[]=$mid;//把分割的元素加到小的数组后面,不能忘了它哦
$rightArray=quickSort($rightArray);//把比较大的数组再一次进行分割
returnarray_merge($leftArray,$rightArray);//组合两个结果
}
$a=array_rand(range(1,3000),1600);//生成1600个元素的随机数组
shuffle($a);//打乱数组的顺序
$t1=microtime(true);
bubbleSort($a);//冒泡排序
$t2=microtime(true);
echo"冒泡排序用时:".(($t2-$t1)*1000).'ms'."\n";
$t3=microtime(true);
selectSort($a);//选择排序
$t4=microtime(true);
echo"选择排序用时:".(($t4-$t3)*1000).'ms'."\n";
$t5=microtime(true);
insertSort($a);//插入排序
$t6=microtime(true);
echo"插入排序用时:".(($t6-$t5)*1000).'ms'."\n";
$t7=microtime(true);
quickSort($a);//快速排序
$t8=microtime(true);
echo"快速排序用时:".(($t8-$t7)*1000).'ms';
以上所述是小编给大家介绍的PHP实现四种基础排序算法的运行时间比较,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!