本文的代码来自于《数据结构与算法(JAVA语言版)》,是笔者在网上找到的资料,非正式出刊版物。笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论。
  希尔排序的基本思想是先把数组分成若干个小数组,然后对小数组进行排序,最后再整体排序。
  如图所示


Java具体实现代码:
输入:数据元素数组r,数组r 的待排序区间[low..high],步长序列delta
输出:数组r 以关键字有序
代码:

public void shellSort(Object[] r, int low, int high, int[] delta){for (int k=0;k<delta.length;k++)shellInsert(r, low, high, delta[k]); //一趟步长为delta[k]的直接插入排序
}
private void shellInsert(Object[] r, int low, int high, int deltaK){for (int i=low+deltaK; i<=high; i++)if (strategy.compare(r[i],r[i-deltaK])<0){ //小于时,需将r[i] 插入有序表Object temp = r[i];int j = i-deltaK;for(; j>=low&&strategy.compare(temp,r[j])<0; j=j-deltaK)r[j+deltaK] = r[j]; //记录后移r[j+deltaK] = temp; //插入到正确位置}
}

数据算法之希尔排序(shellSort)的Java实现相关推荐

  1. 经典算法之希尔排序法(Java实现)

    活动地址:21天学习挑战赛 目录 一.算法 1.算法概述 2.基本思想 3.算法步骤 4.算法特点 二.算法实践 1.Java代码 2.执行结果 三.复杂度分析 1.时间复杂度 2.空间复杂度 一.算 ...

  2. 数据算法之选择排序(selectSort)的Java实现

    本文的代码来自于<数据结构与算法(JAVA语言版)>,是笔者在网上找到的资料,非正式出刊版物.笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论. 选择排序的基本思想是在待排 ...

  3. JAVA中希尔排序去的讲解_java 中基本算法之希尔排序的实例详解

    java 中基本算法之希尔排序的实例详解 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法.该方法因DL.Shel ...

  4. Java排序算法之——希尔排序

    算法简述 希尔排序也叫作shell排序或缩小增量排序,据说是一个叫D.L.Shell的人发明出来的,顾取名shell排序.这种排序是基于插入排序思想的,也比较适用于数据量大时. 我刚开始看到时候对于插 ...

  5. 希尔排序基础java代码_java 算法之希尔排序详解及实现代码

    摘要:这篇Java开发技术栏目下的"java 算法之希尔排序详解及实现代码",介绍的技术点是"希尔排序详解.实现代码.希尔排序.Java.实现.代码",希望对大 ...

  6. 希尔排序(shellsort)算法实现

    希尔排序(shellsort)又叫增量递减(diminishing increment)排序,是由D.L. Shell发明的,这个算法是通过一个逐渐减小的增量使一个数组逐渐趋近于有序从而达到排序的目的 ...

  7. JAVA排序算法之希尔排序

    基本介绍 希尔排序是希尔(Donald Shell)于 1959 年提出的一种排序算法.希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序. 希尔排序法基本思 ...

  8. 排序算法之希尔排序(Java实现)

    希尔排序介绍 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法.希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序. 希尔排序基本思想 ...

  9. 排序算法-03希尔排序(python实现)

    希尔排序 简述 希尔排序又称之为缩小增量排序,从思维导图(冒泡排序的博客)可以得知,这也是一种插入排序,事实上,它就是直接插入排序的加强优化版本. 过程描述 下面的叙述按照维基百科的例子来解释,有一个 ...

最新文章

  1. Bzoj3998: [TJOI2015]弦论
  2. linux离线安装docker教程,Linux 离线安装docker的过程
  3. Android中的MVP模式初步使用
  4. 架设SharePoint工作组网站(上)
  5. python学习历程-安装篇(一)
  6. 搞Java的年薪 40W 是什么水平?
  7. Repeater控件的分隔线
  8. Java高次方数尾数输出_C语言求高次方数的尾数代码解析
  9. java holder 遍历_复合组件editableValueHolder与Bean验证不一致
  10. ASP.NET Core 实战:将 .NET Core 2.0 项目升级到 .NET Core 2.1
  11. 出国怎么能不出现天价微博?
  12. [DB]MariaDB 与 MySql 数据库
  13. (MATLAB中文乱码)UTF-8转GBK编码
  14. thinkphp 3.+ Apache url重写问题(.htaccess)
  15. 照片墙模板 html,照片墙模板(ppt照片墙模板)
  16. 本特利框架3500/05-01-01-CN-00
  17. linux下tomcat热部署,怎样将项目部署到Linux上tomcat热部署
  18. STM8L建立IAR工程
  19. Facebook广告投放数据分析
  20. 海湾主机汉字注释表打字出_海湾消防主机字根表-海湾消防主机

热门文章

  1. C++ list类的模拟实现
  2. SIFT特征提取分析(一)
  3. ds排序--希尔排序_排序算法 - 希尔排序分析及优化
  4. JDBC中Statement接口提供的execute、executeQuery和executeUpdate之间的区别
  5. centos7查看mysql进程显示端口_CentOS查看进程端口号以及kill操作
  6. 452. 用最少数量的箭引爆气球(JavaScript)
  7. php中提取%3cdiv,cmseasy getshell 0day
  8. 用java编写战舰 游戏吗_如何在Java中正确建模战舰游戏
  9. python父亲节礼物送什么_父亲节送什么礼物给父亲呢?
  10. mysql 存储过程复杂查询_SQL分页存储过程 支持连接查询等复杂的SQL