PHP技术

当前位置:首页 > PHP技术 >

PHP实现归并排序法

时间:2015-09-05        阅读:次        QQ群:182913345

通过这张图,很直观,一看就能明白归并排序法这个算法的思路:图下。 

PHP实现归并排序法
 
/*
 *Author:www.php520.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);

上一篇:ThinkPHP 实现数据库事务回滚示例代码

下一篇:PHP设计模式:单例模式

扫一扫,更多精彩内容推送

PHP技术分享

分享PHP技术,前端技术,数据库,SEO优化,服务器,网络安全等知识,是php程序员工作学习的好帮手!

Copyright © 2013-2015.PHP技术分享 www.php520.cn  版权所有  网站地图    PHP学习交流群

免责声明:网站内容收集于互联网,本网站不承担任何由于内容的合法性及健康性所引起的争议和法律责任。

欢迎大家对网站内容侵犯版权等不合法和不健康行为进行监督和举报。 沪ICP备15014499号-2