Johnny

表面的激烈是由于内心的单薄,真正的力量如同流水一般沉静
随笔 - 1, 文章 - 5, 评论 - 0, 引用 - 0
数据加载中……

希尔排序Java代码

/**
 * 希尔排序
 * 
@author sikaijian
 
*/
public class ShellSort {
    public static void sort(int[] data){
        int d = data.length/2;
        while(d!=0){
            directInsertSort(data, d);
            d/=2;
        }
    }
    
    /**
     * 带增量的直接插入排序
     * 
@param data 待排序数组
     * 
@param d 增量
     
*/
    private static void directInsertSort(int[] data, int d){
        int len = data.length;
        
        for(int i=0; i+d<len; i++){
            int pCurrent = i+d;
            int left = i-1;
            while(pCurrent<len){
                int front = pCurrent-d;
                int key = data[pCurrent];
                while(front>left && data[front]>key){
                    data[front+d] = data[front];
                    front-=d;
                }
                data[front+d] = key;
                
                pCurrent+=d;
            }
        }
    }
    
    public static void showArray(int[] array){
        for (int t : array) {
            System.out.print(t);
            System.out.print(" ");
        }
    }
    
    /**
     * 测试代码
     * 
@param args
     
*/
    public static void main(String[] args) {
        int[] data = new int[] { 49, 23, 65, 13, 38, 96, 12, 33, 88, 123, 22,
                11, 9, 55, 111, 0 };

        showArray(data);
        System.out.println();
        System.out.println("------------------------------");
        ShellSort.sort(data);

        showArray(data);
    }
}

posted on 2012-09-21 17:30 瓢菝的雨夜 阅读(168) 评论(0)  编辑  收藏 所属分类: 数据结构算法


只有注册用户登录后才能发表评论。


网站导航: