排序之希尔排序

package test;
public class Main{
    public static void shellsort(int[] arr) {
        //step:步长
        for(int step=arr.length/2;step>0;step=step/2) {
            //对一个补偿空间进行比较[step,arr.length]
            for(int i=step;i<arr.length;i++) {
                int value=arr[i];
                int j;
                //对步长区间中具体的元素进行比较
                for(j=i-step;j>=0&&arr[j]>value;j-=step) {
                    //j为左区间的取值,j+step为右区间与左区间的对应值
                    arr[j+step]=arr[j];
                }
                //此时step为一个负数,[j+step]为左区间上的初始交换值
                arr[j+step]=value;
            }
        }
    }
    public static void main(String[] args){
        int[] arr = {10,7,2,4,7,62,3,4,2,1,8,9,19};
        shellsort(arr);
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务