php实现希尔排序

$arr = [9, 43, 12, 0, 87, 1];
function shell_sort(&$arr){
    $gap = count($arr) -1;
    $max = count($arr) -1;
    do{
        $gap = $gap/2;
        for($i = 0; $i <= $max - $gap; $i++){
            for($j = $i; $j <= $max - $gap; $j += $gap){
                if($arr[$j] < $arr[$j + $gap]){
                    swap($arr, $j, $j + $gap);
                }
            }
        }
    }while($gap > 1);
}
shell_sort($arr);
var_export($arr);

 

posted @ 2016-05-02 21:35  天空中的蜂蜂  阅读(480)  评论(0编辑  收藏  举报