希尔排序算法

package com.cn.gao;



public class ShellSort {

    public static final int SIZE=10;

    //希尔排序算法

    public static void shellSort(int[] a){

        int d,i,j,temp,k=0;;

        for(d=a.length/2;d>=1;d/=2){

            for(i=d;i<a.length;i++){

                temp=a[i];

                j=i-d;

                while(j>=0&&a[j]>temp){

                    a[j+d]=a[j];

                    j-=d;

                }

                a[j+d]=temp;                

            }

            k++;  //记录步数

            System.out.print("第"+k+"步的排序结果为:");

            for(int m=0;m<a.length;m++){

                System.out.print(" "+a[m]);

            }

            System.out.println();

        }

    }

    

    public static void main(String[] args){

        int[] a = new int[SIZE];

        //为数组元素赋值

        for(int i=0;i<a.length;i++){

            a[i] = (int) (100 + Math.random()*100);

        }

        //输出排序前的数组元素

        System.out.println("排序前的数组为:");

        for(int i=0;i<a.length;i++){

            System.out.print(a[i]+" ");

        }

        System.out.print("\n");

        //对数组排序

        shellSort(a);

        //输出排序后的数组元素

        System.out.println("排序后的数组为:");

        for(int i=0;i<a.length;i++){

            System.out.print(a[i]+" ");

        }

        System.out.print("\n");

    }

}

 

你可能感兴趣的:(排序算法)