public static  void shellSort(int[] source){
        int len=source.length;
        int d=len/2;
        //增量条件设置
        while (d>0){
            //增量范围循环
            for(int i=0; i<d ; i++){
                //每一个增量内进行插入排序
                for(int j=i+d;j<len;j=j+d){
                    //寻找比较的前一个节点
                    int k=j-d;
                    //为temp找到合适的位置
                    int temp=source[j];
                    //满足条件判定
                    while (k>=0 && source[k]>temp){
                        source[k+d]=source[k];
                        k=k-d;
                    }
                    source[k+d]=temp;
                }
            }
            d=d/2;
        }
    }