博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【经典算法】第四回:希尔排序
阅读量:6094 次
发布时间:2019-06-20

本文共 985 字,大约阅读时间需要 3 分钟。

1.概述

希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。

原理:先将序列分割成若干个子序列(由相隔某个“增量”的 元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。插入排序在元素基本有序的情况下,效率会更高,因此先分组,再插入排序,再组装,已达到序列基本有序,所以希尔排序在时间效率上比插入排序有较大提高,时间复杂度为O(n3/2)。

2.示例

//希尔排序        public static void ShellSort(int[] nums)        {            //取步长            int step = nums.Length / 2;            while (step >= 1)            {                for (int i = step; i < nums.Length; i++)                {                    var temp = nums[i];                    int j;                    for (j = i - step; j >= 0 && temp < nums[j]; j = j - step)                    {                        nums[j + step] = nums[j];                    }                    nums[j + step] = temp;                }                step = step / 2;            }        }        //    int[] list = new[] { 4, 1, 2, 7, 9, 0, 8 };        //    Sorter.ShellSort(list);

 

转载于:https://www.cnblogs.com/qqlin/archive/2013/02/26/2933104.html

你可能感兴趣的文章
Vue -- 双向过滤器去除html标签
查看>>
H5禁止底部横向滚动条,使一个元素居中
查看>>
android 的安全问题
查看>>
skatebroads
查看>>
一些常用的命令和cheat sheet
查看>>
转----------数据库常见笔试面试题 - Hectorhua的专栏 - CSDN博客
查看>>
Android 界面设计 java.lang.NullPointerException 异常的解决方法
查看>>
解决ctrl+shift+F快捷键eclipse格式化与输入法简繁转换冲突问题
查看>>
kali在vbox上运行设置共享文件夹
查看>>
【观点】程序员的七大坏毛病
查看>>
一起谈.NET技术,Mono向Mac OS应用程序开发示好
查看>>
一起谈.NET技术,C#调试心经(续)
查看>>
是否该让开发人员跟客户直接交流
查看>>
艾伟_转载:ASP.NET实现类似Excel的数据透视表
查看>>
计算机组成原理-第3章-3.4
查看>>
Spring学习(16)--- 基于Java类的配置Bean 之 基于泛型的自动装配(spring4新增)...
查看>>
实验八 sqlite数据库操作
查看>>
JavaScript json对象与字符串 互转
查看>>
四种简单的排序算法(转)
查看>>
Quartz2D之着色器使用初步
查看>>