为什么合并算法代码不起作用。 [英] Why merge algorithm code is not working.

查看:93
本文介绍了为什么合并算法代码不起作用。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  class  MergeSort {


function divideElements($ arr,$ l,$ r,$ container){

if ($ l< $ r){
$ m =(int)(($ l + $ r)/ 2);
$ this-> divideElements($ arr,$ l,$ m,$ container);
$ this-> divideElements($ arr,($ m + 1),$ r,$ container);
$ this-> merge($ arr,$ l,$ m,($ m + 1),$ r,$ container);
}
return 0 ;
}

函数合并($ arr,$ l1,$ r1,$ l2,$ r2,$ container){
$我 = $ l1 ;
$ j = $ l2 ;
$ k = count($ container);

while ($ i< = $ r1 &&& span class =code-sdkkeyword> $ j < = $ r2){
if ($ arr [$ i]> $ arr [$ j]){
$ container [$ k ++] = $ arr [$ j ++];
} else {
$ container [$ k ++] = $ arr [$ i ++];
}
}

while ($ j< = $ r2)
$ container [$ k ++] = $ arr [$ j ++];

while ($ i< = $ r1)
$ container [$ k ++] = $ arr [$ i ++];
}

}


$ ms = MergeSort();
$ arr = [12,11,13,5,6,7];
$ n = count($ arr) - 1 ;
$ container = array();
$ sortedA = $ ms-> divideElements($ arr,0,$ n,$ container);





我尝试过的事情:



我调试了代码,也接受了帮助来自这个网站:合并排序程序C - 疯狂程序员 [ ^ ]

解决方案

arr,


l,


R,

class MergeSort {
    
    
		function divideElements($arr, $l, $r, $container) {
			
			if ($l < $r) {
				$m = (int) (($l + $r) / 2);
				$this->divideElements($arr, $l, $m, $container);
				$this->divideElements($arr, ($m + 1), $r, $container);
				$this->merge($arr, $l, $m, ($m + 1), $r, $container);			
			}
			return 0;
		}
    
       function merge ($arr, $l1, $r1, $l2, $r2, $container) {
			$i = $l1;
			$j = $l2;
			$k = count($container);
			
			while ($i <= $r1 && $j <= $r2) {
				if ($arr[$i] > $arr[$j]) {
					$container[$k++] = $arr[$j++];				
				} else {
					$container[$k++] = $arr[$i++];				
				}			
			}
			
			while ($j <= $r2) 
				$container[$k++] = $arr[$j++];
			
			while ($i <= $r1) 
				$container[$k++] = $arr[$i++];
		}
    
    }
    
    
    $ms = new MergeSort();
    $arr = [12,11,13,5,6,7];
    $n = count($arr) - 1;
    $container = array();
    $sortedA = $ms->divideElements($arr, 0, $n, $container);



What I have tried:

I have debug the code and also take help from this website : Program for Merge Sort in C - The Crazy Programmer[^]

解决方案

arr,


l,


r,


这篇关于为什么合并算法代码不起作用。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆