<?php
class Test
{
public function shellSort(&$arr)
{
$this->sort($arr,0,count($arr)-1);
}
public function sort(&$arr,$lo,$hi)
{
if($lo >= $hi)
{
return;
}
$tempNum =intval(($hi - $lo)/2);
$mid = $lo + $tempNum;
$this->sort($arr,$lo,$mid);
$this->sort($arr,$mid+1,$hi);
$this->merge($arr,$lo,$mid,$hi);
print_r($arr);
}
public function merge(&$arr,$lo,$mid,$hi)
{
$m = $lo;
$n = $mid+1;
for($k = $lo;$k <= $hi;$k++)
{
$temps[$k] = $arr[$k];
}
for($i = $lo; $i<=$hi; $i++)
{
if($m > $mid)
{
$arr[$i] = $temps[$n++];
}
else if($n > $hi)
{
$arr[$i] = $temps[$m++];
}
else if($temps[$m] > $temps[$n])
{
$arr[$i] = $temps[$n++];
}
else
{
$arr[$i] = $temps[$m++];
}
}
}
}
$test = new Test();
$params = array(5,8,7,6);
$test->shellSort($params);
排序--归并排序
最新推荐文章于 2024-11-30 17:41:13 发布