Shell-módszer

Nem foglalkozunk egyszerre minden rendezendő elemmel, csak az egymástól meghatározott távolságra lévőkkel. Minden rendezési kör elején meghatározzuk a lépésközt, amelyen belül az elemeket rendezzük az általunk választott valamely algoritmussal.

<?php
function shellSort($arr)
{
    
$inc round(count($arr)/2);
    while(
$inc 0)
    {
        for(
$i $inc$i count($arr);$i++){
            
$temp $arr[$i];
            
$j $i;
            while(
$j >= $inc && $arr[$j-$inc] > $temp)
            {
                
$arr[$j] = $arr[$j $inc];
                
$j -= $inc;
            }
            
$arr[$j] = $temp;
        }
        
$inc round($inc/2.2);
    }
    return 
$arr;
}
?>

Forrás