关于希尔排序做出的优化。

private static void shellSort(int[] arr) {
        int h=1;
        while(h<=arr.length)
        {
            h=h*3+1;
        }
        boolean flag;
        for(int gap=h;gap>0;gap=(gap-1)/3)
        {
            for(int i=gap;i<arr.length;i++)
            {
              flag=false;
                for(int j=i;j>gap-1;j-=gap)
                {
                    if(arr[j]<arr[j-gap])
                    {
                        swap(arr,j,j-gap);
                        flag=true;
                    }
                     if(flag==false)break;
                }
            }
        }

    }

优化了内层循环体,因为之前分组时已经将最大值放在了分组的最后一个数,那么当我新加到数组的那个数只要大于分组的最后一个数,那么我就可以不用再向前一一比较,也就是跳出了最内层的循环。