QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

切换风格 注册 找回密码

php开发-PHP教程网


发表于 2018-9-4 15:59:42 | 显示全部楼层 |阅读模式

算法-归并排序的PHP实现
  1. <?php
  2. //归并排序

  3. function merge(&$A,$left,$mid,$right,$temp){
  4.         //7.左堆起始
  5.         $i=$left;
  6.         //8.右堆起始
  7.         $j=$mid+1;
  8.         //9.临时数组起始
  9.         $t=0;
  10.         //10.左右堆数组都没到末尾
  11.         while($i<=$mid && $j<=$right){
  12.                 //11.左堆小于等于右堆时
  13.                 if($A[$i]<=$A[$j]){
  14.                         //12.左堆赋给临时数组,索引加1
  15.                         $temp[$t++]=$A[$i++];
  16.                 }else{
  17.                         //13.右堆赋给临时数组,索引加1
  18.                         $temp[$t++]=$A[$j++];
  19.                 }  
  20.         }  
  21.         //14.左堆剩余的全部加进临时数组
  22.         while($i<=$mid){
  23.                 $temp[$t++]=$A[$i++];
  24.         }  
  25.         //15.右堆剩余全部加进临时数组
  26.         while($j<=$right){
  27.                 $temp[$t++]=$A[$j++];
  28.         }  
  29.         //16.临时数组的元素重新赋回原数组
  30.         for($i=0;$i<$t;$i++){
  31.                 $A[$left+$i]=$temp[$i];
  32.         }  
  33. }

  34. //1.利用分治法思想,递归的切分排序元素
  35. function mergeSort(&$A,$left,$right,$temp){
  36.         //2.最左只能小于最右,等于的时候就一个元素,大于是不可能的
  37.         if($left<$right){
  38.                 //3.获取中间的元素
  39.                 $mid=intval(($left+$right)/2);
  40.                 //4.递归左半区
  41.                 mergeSort($A,$left,$mid,$temp);
  42.                 //5.递归右半区
  43.                 mergeSort($A,$mid+1,$right,$temp);
  44.                 //6.合并两个有序数组为一个有序数组
  45.                 merge($A,$left,$mid,$right,$temp);
  46.         }   
  47. }

  48. $A=array(2,4,6,1,5,7,3,8,9);
  49. $temp=array();
  50. mergeSort($A,0,count($A)-1,$temp);
  51. var_dump($A);
复制代码


发表于 2018-9-4 16:00:09 | 显示全部楼层
确实不错,顶先
发表于 2018-9-6 05:20:09 | 显示全部楼层
前排支持下了哦~
发表于 2018-9-6 09:12:42 | 显示全部楼层
在撸一遍。。。
发表于 2018-9-6 20:53:27 | 显示全部楼层
纯粹路过,没任何兴趣,仅仅是看在老用户份上回复一下
发表于 2018-9-7 01:53:08 | 显示全部楼层
呵呵,低调,低调!
发表于 2018-9-7 04:24:49 | 显示全部楼层
楼下的接上
发表于 2018-9-7 05:36:33 | 显示全部楼层
向楼主学习
发表于 2018-9-7 07:46:21 | 显示全部楼层
我也顶起出售广告位

新浪微博达人勋

发表于 2018-9-7 13:48:12 | 显示全部楼层
看帖要回,回帖才健康,在踩踩,楼主辛苦了!
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆



Archiver|  

662p开源网. Powered by Niuzen

© 2001-2014 Niuzen Inc.

返回顶部