Maison  >  Article  >  développement back-end  >  数据结构(8) 归并排序

数据结构(8) 归并排序

WBOY
WBOYoriginal
2016-08-08 09:32:111100parcourir
归并排序的算法实现:
<?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教程有兴趣的朋友有所帮助。

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn