当前位置: 首页 > 后端技术 > PHP

php的四种基本算法

时间:2023-03-29 22:08:42 PHP

php的四种基本算法很多人说算法是程序的核心。程序好坏的关键在于程序算法的优劣。作为一个phper,虽然很少接触算法的东西。但是对于冒泡排序、插入排序、选择排序、快速排序这四种基本算法,我觉得还是需要掌握的。下面是我根据自己的理解对四种方法进行的分析。需求:使用冒泡排序、选择排序、插入排序、快速排序对下面数组中的值进行降序排序。$arr(1,43,54,62,21,66,32,78,36,76,39);1。冒泡排序法【PHP】纯文本查看复制代码?0102030405060708091011121314151617181920212223242526272829$arr[$k+1]){$tmp=$arr[$k+1];$arr[$k+1]=$arr[$k];$arr[$k]=$tmp;}}}返回$arr;}$arr=array(1,43,54,62,21,66,32,78,36,76,39);echo'

';print_r(bubble_sort($arr));?>效果图:2.选择排序法[PHP]纯文本查看复制代码?0102030405060708091011121314151617181920212223242526272829303132$arr[$j]){//比较,找到较小的,记录最小值的位置;在接下来的比较中,//应该使用已知的最小值进行比较。$p=$j;}}//当前最小值的位置已经确定,保存到$p中。//如果发现最小值的位置与当前假设的位置$i不一样,那么就可以调换位置if($p!=$i){$tmp=$arr[$p];$arr[$p]=$arr[$i];$arr[$i]=$tmp;}}//返回最终结果return$arr;}$arr=array(1,43,54,62,21,66,32,78,36,76,39);echo'
';print_r(select_sort($arr));?>效果图:3.插入排序法[PHP]纯文本查看复制代码?0102030405060708091011121314151617181920212223242526272829303153633php?43插入排序法思路:插入待排序元素已经采用排序编号的数组的指定位置。functioninsert_sort($arr){//区分哪部分已经排序//哪部分没有排序//找到一个需要排序的元素//这个元素从第二个元素开始到最后一个元素这些都是需要排序的元素//用循环标记出来//我循环控制每次需要插入的元素,一旦控制好需要插入的元素,//数组已经被划分为2部分间接,且下标小于当前(左边)是一个排序序列for($i=1,$len=count($arr);$i<$len;$i++){//得到要比较的当前元素值。$tmp=$arr[$i];//内循环控制比较和插入for($j=$i-1;$j>=0;$j--){//$arr[$i];//需要插入的元素;$arr[$j];//需要比较的元素if($tmp<$arr[$j]){//发现插入的元素较小,交换位置//后面的元素和前面的元素交换元素$arr[$j+1]=$arr[$j];//设置之前的号码为当前需要兑换的号码$arr[$j]=$tmp;}else{//如果遇到不需要移动的元素//因为是已经排序好的数组,前面的不需要再进行比较。休息;}}}//将这个元素插入到排序序列中。返回返回$arr;}$arr=array(1,43,54,62,21,66,32,78,36,76,39);echo'
';print_r(insert_sort($arr));?>效果图:4.快速排序方法【PHP】纯文本查看复制代码?<=1){return$arr;}//如果没有return,说明数组元素个数大于1,需要排序//选择一个scale//选择第一个元素$base_num=$arr[0];//遍历除标尺以外的所有元素,按照大小关系放入两个数组//初始化两个数组$left_array=array();//如果小于标尺则$right_array=array();//为大于比标尺($i=1;$i<$length;$i++){if($base_num>$arr[$i]){//放入左数组$left_array[]=$arr[$i];}else{//放在右边$right_array[]=$arr[$i];}}//分别对左右数组进行同样的排序//递归调用该函数并记录结果$left_array=quick_sort($left_array);$right_array=quick_sort($right_array);//合并左尺度右返回array_merge($left_array,array($base_num),$right_array);}?>效果图:更多技术资料请关注:gzitcast