# 分
function slice($arr)
{
if (sizeof($arr) <= 1) {
return $arr;
}
$mid = intval(sizeof($arr) / 2);
$left = array_slice($arr, 0, $mid);
$right= array_slice($arr, $mid);
$larr = slice($left);
$rarr = slice($right);
$merge = merge($larr , $rarr);
show_array($merge);
return $merge;
}
#归并
function merge($arr_left , $arr_right){
$min = [];
while(sizeof($arr_left) && sizeof($arr_right)){
$min[] = $arr_left[0] < $arr_right[0] ?
array_shift($arr_left) : array_shift($arr_right);
}
$arr = [];
if(sizeof($min) > 0){
if (sizeof($arr_left) >0 ) {
$arr += array_merge($min , $arr_left);
}
if (sizeof($arr_right) >0 ) {
$arr += array_merge($min , $arr_right);
}
}
return $arr;
}
PHP实现:二分归并排序
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 原文链接:http://blog.csdn.net/mumubumaopao/article/details/51...
- 1、搜索都是建立在排好序的序列之上再搜索。(1)二分法搜索拿中间的数和要搜索的数比较。(2)排序的顺序要求是升序。...
- 选择排序 选择排序是从数组下标0(下标为0的元素)开始依次固定与之后的所有元素进行比较,比被固定的元素小则与之交换...
- 选择排序 对于任何输入,时间为O(n*n); 冒泡排序 最优(对于升序的数组,因为加入了一个跳出判断):O(n),...