<?php //归并排序 function all_array_merge($arrA,$arrB){ $arrC=array(); $i=$j=$k=0; $arrA_length=count($arrA); $arrB_length=count($arrB); while($i<$arrA_length && $j<$arrB_length){ if($arrA[$i]<$arrB[$j]){ $arrC[]=$arrA[$i++]; }else{ $arrC[]=$arrB[$j++]; } } while($i<$arrA_length){ $arrC[]=$arrA[$i++]; } while($j<$arrB_length){ $arrC[]=$arrB[$j++]; } return $arrC; } function array_merge_sort($array){ $length=count($array); if($length<=1){ return $array; } $mid=intval($length/2);//取数组中间元素的坐标 $array_left=array_slice($array,0,$mid);//拆分元素0-mid折部分给左边$array_left $array_right=array_slice($array,$mid);//拆分数组mid-$length-1这部分给右边$array_right $array_left=array_merge_sort($array_left);//左边拆分完后开始递归合并 $array_right=array_merge_sort($array_right);//右边拆分完后开始递归 $result=all_array_merge($array_left,$array_right);//合并两个数组,递归合并) return $result; } $arr=array(456,35,77,356,33,98,11,44,82); $res=array_merge_sort($arr); foreach($res as $key => $value){ echo "key: ".$key." value: ".$value."<br/>"; } ?>
以上就介紹了資料結構(8) 歸併排序,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。