希尔排序

希尔排序

    /**
     * 的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入
     * @param args
     */
    
    public static void main(String[] args) {
    
        int arr[] ={75,70,85,80,60,100,90};
        ShellSort(arr);
        System.out.println(Arrays.toString(arr));
    }
    
    
    
    public static  int[] ShellSort( int[] arr){
        //int arr[] ={75,70,85,80,60,100,90};
       // int grow= arr.length/2;
        int grow= arr.length/2;
        while(grow>=1){
            for(int i =grow; i<arr.length ;i++){
    
                int insertValue =arr[i];
    
                // 插入的位置
                int insertIndex=i-grow;
                while( insertIndex >=0 && insertValue < arr[insertIndex]){
                    //待插入的值比已排序部分的元素值小,已排序部分当前比较元素后移
                    arr[insertIndex+grow] =arr[insertIndex];
                    //待插入的值比已排序部分的元素值小,插入位置前移
                    insertIndex= insertIndex -grow;
                }
                //则将待插入的值赋值到对应位置的数组中
                arr[insertIndex+grow] = insertValue;
            }
            grow=grow/2;
        }
    
        return arr;
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容