• 希尔排序


    基本思想

    1.把记录按步长 gap 分组,对每组记录采用直接插入排序方法进行排序。
    2.随着步长逐渐减小,所分成的组包含的记录越来越多,当步长的值减小到 1 时,整个数据合成为一组,构成一组有序记录,则完成排序。

    代码实现

    package com.csdhsm.sort;
    
    /** 
     * @Title: ShellSort.java
     * @Package: com.csdhsm.sort
     * @Description 希尔排序
     * @author Han
     * @date 2016-4-3 下午5:04:01 
     * @version V1.0
     */ 
          
    public class ShellSort {
        
        public void sort(int[] arr,int len){
            
            /**
             * 步长默认为长度/2
             */
            int gap = len/2;
            
            /**
             * 当步长gap为1时,结束排序
             */
            while(gap >= 1){
                
                // 把距离为 gap 的元素编为一个组,扫描所有组
                for(int i = gap;i < len;i ++){
                    
                    int temp = arr[i];
                    int j = 0;
                    
                    // 对距离为 gap 的元素组进行排序
                    for(j = i-gap;j >= 0 && temp < arr[j];j = j-gap){
                        
                            arr[i] = arr[j];
                    }
                    arr[j + gap] = temp;
                }
                //减小增量
                gap = gap / 2;
            }
        }
    }

    效率分析

    不稳定

    空间复杂度:O(1)

    时间复杂度:O(nlog2n)

    最坏情况:O(nlog2n)

    最好情况:O()

  • 相关阅读:
    Andriod调试桥
    抓包工具charles的使用
    测试常用工具
    Indentation error codes
    Cmder 中文乱码的解决方法
    修改Cmder命令提示符
    统计单词出现的字数
    将字串内容输出到文件
    python数据实例str
    python语法检查工具
  • 原文地址:https://www.cnblogs.com/a294098789/p/5350173.html
Copyright © 2020-2023  润新知