首頁  >  文章  >  後端開發  >  資料結構(8) 歸併排序

資料結構(8) 歸併排序

WBOY
WBOY原創
2016-08-08 09:32:111112瀏覽
歸併排序的演算法實作:
<?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教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn