排序算法-希尔排序

思路: 先将整个待排元素序列切割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序
复杂度: O(n3/2)

function shellSort($num){                          
    $n = count($num);                              
    while($n >= 1){                                
        for($i = 1; $i < $n; $i++){                
            $j = $i - 1;                           
            $temp = $num[$i];                      
            while($j >= 0 && $temp < $num[$j]){    
                $num[$j + 1] = $num[$j];           
                $j--;                              
            }                                      
            $num[$j + 1] = $temp;                  
        }                                          
        $n = intval($n / 2);                       
    }                                              
    return $num;                                   
}
posted @ 2019-02-17 15:48  ony-z  阅读(93)  评论(1编辑  收藏  举报