public static Integer[] shellSort(Integer[] data){  
        int j;  
        int gap=data.length / 2;
        for(; gap > 0; gap /= 2){  
            for(int i = gap; i < data.length; i++){  
                int temp = data[i];  
                for(j = i; j >= gap && temp<data[j - gap]; j -= gap){  
                    data[j] = data[j - gap];  
                }  
                data[j] = temp;  
            }  
        }  
        return data;
    }