概念:归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。
代码演示
个人版本
$arr1 = array(2,5,7,8,11,15);$arr2 = array(1,6,9,10,13,14,15);function merge_sort($arr1,$arr2){$len1 = count($arr1);$len2 = count($arr2);$key2 = $key1 = 0;$array = array();$status = false;while ($status == false) {if($key1<$len1 && $key2<$len2){$array[] = min($arr1[$key1],$arr2[$key2]);if($arr1[$key1]>$arr2[$key2]){$key2++;}else{$key1++;}}else{$status = true;if($arr1[$key1]){$array[] = $arr1[$key1];}else{$array[] = $arr2[$key2];}}}return $array;}echo "<pre>";print_r(merge_sort($arr1,$arr2));echo "</pre>";
网上参考
/*** 将两个有序数组合并成一个有序数组* @param $arrA,* @param $arrB,* @reutrn array合并好的数组*/function mergeArray($arrA, $arrB) {$a_i = $b_i = 0;//设置两个起始位置标记$a_len = count($arrA);$b_len = count($arrB);while($a_i<$a_len && $b_i<$b_len) {//当数组A和数组B都没有越界时if($arrA[$a_i] < $arrB[$b_i]) {$arrC[] = $arrA[$a_i++];} else {$arrC[] = $arrB[$b_i++];}}//判断 数组A内的元素是否都用完了,没有的话将其全部插入到C数组内:while($a_i < $a_len) {$arrC[] = $arrA[$a_i++];}//判断 数组B内的元素是否都用完了,没有的话将其全部插入到C数组内:while($b_i < $b_len) {$arrC[] = $arrB[$b_i++];}return $arrC;}
本文介绍归并排序的基本概念及其作为分治法应用的重要性,并通过PHP代码演示了两种不同的归并排序实现方法。
1232

被折叠的 条评论
为什么被折叠?



