이 코드는 작은 요소 집합에 대해 올바른 결과를 산출하지만 큰 숫자 집합 (100,000 개 요소)에 대한 결과가 잘못된 이유를 알지 못합니다. 예를 들어 the 100,000 integers text file from coursera입니다. 이미 파이썬 코드에서 올바른 결과를 얻었습니다. 하지만이 PHP 코드가 정확합니다 출력이되지 않는 이유 파악하려는 2,397,819,672 2407905288.병합 정렬을 사용한 역전 계산 - 예기치 않은 결과
$raw_input = file_get_contents($argv[1]);
$arr_input = explode("\n",trim($raw_input));
$count = 0.0;
function merge_sort($a)
{
if(count($a) <2) return $a;
$hl = count($a)/2;
return merge(merge_sort(array_slice($a, 0, $hl)), merge_sort(array_slice($a, $hl)));
}
function merge($l, $r)
{
global $count;
$result = array();
$i = $j = 0;
while($i < sizeof($l) && $j < sizeof($r))
{
if($l[$i] < $r[$j])
{
$result[] =$l[$i];
$i++;
}
else
{
$result[] =$r[$j];
$count+= (sizeof($l) - $i);
$j++;
}
}
while($i <sizeof($l))
{
$result[] = $l[$i];
$i++;
}
while($j <sizeof($r))
{
$result[] = $r[$j];
$j++;
}
return $result;
}
$sorted = merge_sort($arr_input);
print $count . "\n";
정말 고마워요 !! 마술의 하나 일 뿐이야 :-? – hungneox