因为专注,所以专业
2005 - 2020

PHP实现归并排序法分享

时间:2020-06-29 13:47:29    作者:八叔模板堂

PHP实现归并排序法分享


/*
 *Author:www.8sk.cn
 *Time:2015-09-05
 *Note:归并排序算法PHP实现
 */ 
 
//归并排序算法PHP实现
$dst_array=array(26,5,7,9,4,2,8,11,25,89,56,35,56,14,18,23,16,19,34,3,17,99,49,
22,108,25,104,13,50);

function mergerSort($array){
	//计算数组的长度
	$leng=count($array);

	//限制如果此数组只有1个元素时,则不再排序
	if($leng==1) return $array;

	//对数组取中
	$middle=intval($leng/2);
	
	//将数组切分成前后两部分
	$frontArr=array_slice($array,0,$middle);
	$behindArr=array_slice($array,$middle);
	
	//递归每部分的数组切分至最小单元后进行处理返回
	$frontArr=mergerSort($frontArr);
	$behindArr=mergerSort($behindArr);
	
	//对前后两个已经排好了序的数据,哪个更小就将哪个插入新的数组。
	$newArr=array();
	while($frontArr && $behindArr){
		$newArr[]=$frontArr[0]<$behindArr[0]?array_shift($frontArr):array_shift($behindArr); 
    }
		
	//可能前台数组个数差异及排列问题出现一个数组为空时,另一个数组尚不为空。需要将两数组合并
	return array_merge($newArr,$frontArr,$behindArr);
}

$t=mergerSort($dst_array);
print_r($t);
赞(0
免费拨打  111-1111-1111
免费拨打  111-1111-1111免费拨打 111-1111-1111
微信二维码
手机二维码
返回顶部
返回顶部返回顶部