[PHP]算法-归并排序的PHP实现
2023-02-18 15:47:12 时间
<?php //归并排序 function merge(&$A,$left,$mid,$right,$temp){ //7.左堆起始 $i=$left; //8.右堆起始 $j=$mid+1; //9.临时数组起始 $t=0; //10.左右堆数组都没到末尾 while($i<=$mid && $j<=$right){ //11.左堆小于等于右堆时 if($A[$i]<=$A[$j]){ //12.左堆赋给临时数组,索引加1 $temp[$t++]=$A[$i++]; }else{ //13.右堆赋给临时数组,索引加1 $temp[$t++]=$A[$j++]; } } //14.左堆剩余的全部加进临时数组 while($i<=$mid){ $temp[$t++]=$A[$i++]; } //15.右堆剩余全部加进临时数组 while($j<=$right){ $temp[$t++]=$A[$j++]; } //16.临时数组的元素重新赋回原数组 for($i=0;$i<$t;$i++){ $A[$left+$i]=$temp[$i]; } } //1.利用分治法思想,递归的切分排序元素 function mergeSort(&$A,$left,$right,$temp){ //2.最左只能小于最右,等于的时候就一个元素,大于是不可能的 if($left<$right){ //3.获取中间的元素 $mid=intval(($left+$right)/2); //4.递归左半区 mergeSort($A,$left,$mid,$temp); //5.递归右半区 mergeSort($A,$mid+1,$right,$temp); //6.合并两个有序数组为一个有序数组 merge($A,$left,$mid,$right,$temp); } } $A=array(2,4,6,1,5,7,3,8,9); $temp=array(); mergeSort($A,0,count($A)-1,$temp); var_dump($A);
相关文章
- 手把手教你:轻松打造沉浸感十足的动态漫反射全局光照
- 不惧繁杂背景,视频编辑服务一键实现人像抠图
- 【FAQ】接入HMS Core广告服务中的常见问题总结和解决方法
- 手部骨骼跟踪能力,打造控制虚拟世界的手势密码
- 如何让开发者直接在应用后台控制用户的运动状态?
- 开发者必读:2022年移动应用技术趋势白皮书
- 【FAQ】接入华为应用内支付服务常见问题解答
- 【运营下班指南】有人准点下班,有人凌晨搬砖
- 如何使用Postman调试HMS Core推送接口?
- 如何在保护用户隐私的同时实现精准广告投放?
- 如何通过经纬度坐标获取附近的地址信息?
- HMS Core基于地理位置请求广告,流量变现快人一步
- 携手HMS Core统一扫码服务, 兴业证券优理宝App提升用户扫码体验
- HMS Core Discovery第17期回顾|音随我动,秒变音色造型师
- {版本发布公告}HMS Core 6.6.0来啦
- 电商行业:全链路监测广告投放效果,用数据驱动业务增长
- HMS Core Discovery第17期直播预告|音随我动,秒变音色造型师
- 机器学习服务文本翻译能力升级,中文直译模型让译文表达更地道!
- 如何快速开发一个健康助手,实时守护用户健康
- 应用缺少POI数据,如何开发地点深度信息?