php 归并排序

<?php

mergeSort(&$arr,$left,$right,$temp=array()){
	
	if($left<$right){
		$mid = floor(($left+$right)/2);
		mergeSort($arr,$left,$mid,$temp);
		mergeSort($arr,$mid+1,$right,$temp);
		merge($arr,$left,$mid,$right,$temp);
	}
}

function merge(&$arr,$left,$mid,$right,$temp){
	$i = $left;
	$j = $mid+1;
	$t = 0;
	while($i<=$mid && $j<=$right){
		
		if($arr[$i]<=$arr[$j]){
			$temp[$t] = $arr[$i];
			$t+=1;
			$i+=1;
		}else{
			$temp[$t] = $arr[$j];
			$t+=1;
			$j+=1;
		}
	}

	while($i<=$mid){
		$temp[$t] = $arr[$i];
		$t+=1;
		$i+=1;
	}

	while($j<=$right){
		$temp[$t] = $arr[$j];
		$t+=1;
		$j+=1;
	}

	$t = 0;
	$tempLeft = $left;
	while($tempLeft<=$right){
		$arr[$tempLeft] = $temp[$t];
		$t+=1;
		$tempLeft+=1;
	}
}




//$arr = array(-9,78,0,23,-567,70);
$arr = array(2222,122322,34,22222,44,66,1122);
print_r($arr);
$temp = array();
mergeSort($arr,0,count($arr)-1);
print_r($arr);


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值