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

PHP对常用排序算法

时间:2023-03-30 03:26:46 PHP

冒泡排序的实现是比较相邻元素。如果第一个大于第二个,则交换它们。对每对相邻元素执行相同的操作,从开头的第一对到结尾的最后一对。完成这一步后,最后一个元素就是最大的数。对除最后一个函数之外的所有元素重复上述步骤bubbleSort($arr){for($i=0;$i$arr[$i]){$arr[$j]=$arr[$j]+$arr[$i];$arr[$i]=$arr[$j]-$arr[$i];$arr[$j]=$arr[$j]-$arr[$i];}}}return$arr;}快速排序从数组中挑选一个元素作为基准;对数组重新排序,所有小于基准值的元素都放在基准的前面,所有大于基准值的元素都放在基准的后面(相同的数可以去任何一边)。此分区退出后,基准测试位于序列的中间。递归排序元素小于参考值的子数组和元素大于参考值的子数组;函数quickSort($arr){$arrLength=count($arr);如果($arrLength<=1){返回$arr;}$divider=$arr[0];//获取中间值$left=[];$右=[];对于($i=1;$i<$arrLength;$i++){if($divider<$arr[$i]){$right[]=$arr[$i];//将小于中间值的值放在右边}else{$left[]=$arr[$i];//把大于中间值的值放在左边}}//对其他边递归排序$left=quickSort($left);$right=快速排序($right);返回array_merge($left,[$divider],$right);}在未排序的序列中先选择排序,找到最小(最大)的元素,存储在已排序序列的开头。然后继续从剩余的未排序元素中寻找最小(最大)的元素,然后将其放在已排序序列的末尾。重复第二步,直到所有元素都排序完毕。函数selectSort($arr){$len=count($arr);对于($i=0;$i<$len-1;$i++){$minIndex=$i;对于($j=$i+1;$j<$len;$j++){如果($arr[$j]<$arr[$minIndex]){$minIndex=$j;}}$temp=$arr[$i];$arr[$i]=$arr[$minIndex];$arr[$minIndex]=$temp;}return$arr;}二维数组按照一定的值排序。利用array_multisort函数的排序特性实现$arr=[['name'=>'StuA','age'=>28],['name'=>'StuB','age'=>14],['name'=>'StuC','age'=>59],['name'=>'StuD','age'=>23],['name'=>'StuE','age'=>23],['name'=>'StuF','age'=>21],];//根据年龄键排序array_multisort(array_column($arr,'age'),SORT_DESC,$arr);print_r($arr);