由上图可看到希尔排序先约定一个间隔(图中是4),然后对0、4、8这个三个位置的数据进行插入排序,然后向右移一位对位置1、5、9进行插入排序按照此规律直到全部参与了排序。然后将间隔约定为4-1=3,然后继续进行如上的排序方法。具体过程如下:

9 1 2 3 0 4 5 7 6 8

Setp 1 经过间隔为4排序后变成 :0 1 2 3 6 4 5 7 9 8

Setp 2 经过间隔为3排序后变成 :0 1 2 3 6 4 5 7 9 8

Setp 3 经过间隔为2排序后变成 :0 1 2 3 5 4 6 7 9 8

Setp 4 经过间隔为1排序后变成 :0 1 2 3 4 5 6 7 9 8

减小间隔:对于大的数组一开始的间隔也应该比较大,而且间隔的缩减幅度也应该变大了,比如对于一个1000大小的数组进行排序可以采用间隔为:364、121、40、13、4、1,这里的间隔序列由knuth提出,数列以逆向的形式从1开始,通过递归表达式h=3*h+1来产生,初始值为1.(其他方法也可以产生序列)如下表

下面是希尔排序java代码

public static void shellSort(long[] arr , int eleNum){

int i,j;

long temp;

// 先求出h

int h = 1;

while(h

h = 3 * h + 1; // 1、4

while (h > 0) {

for(i = h ; i

// 对子数组进行排序

temp = arr[i];

j = i;

while(j > h-1 && temp <= arr[j-h]) {

arr[j] = arr[j-h];

j-=h;

}

arr[j] = temp;

}

h = (h-1)/3;

}

System.out.println(Arrays.toString(arr));

}

希尔排序java代码_希尔排序及希尔排序java代码相关推荐

  1. java 快速排序_面试必不可少的几大排序算法,你掌握了吗?

    从上学那一刻起,老师就说排序算法很重要,面试的时候考官常会问道,要我们认真的学习,出去工作的学长学姐也说这么说的,那么为了能在面试中取得好的印象,我们很有必要对算法进行了解,以便在面试中取得好的印象, ...

  2. 冒泡排序java代码_数据结构与算法—冒泡排序(Java实现)

    [toc] 冒泡排序 程序代码 package com.uplooking.bigdata.datastructure; import java.util.Arrays; public class B ...

  3. java冒泡测试代码_数据结构与算法—冒泡排序(Java实现)

    [toc] 冒泡排序 程序代码package com.uplooking.bigdata.datastructure;import java.util.Arrays;public class Bubb ...

  4. java多线程异步调用别的系统接口代码_抢先准备,40个 Java 多线程面试题及答案大汇总!...

    ↑↑↑点上方蓝字关注并标⭐「IT技术思维」 一起培养顶尖技术思维 来源:程序员共成长(id:finishbug) 这些多线程的问题,有些来源于各大网站.有些来源于自己的思考.可能有些问题网上有.可能有 ...

  5. 基础贴吧java代码_原来你是这样的JAVA[01]-基础一瞥

    1.Java是什么呢? Java不仅是一门语言,而且是一个完整的平台,有一个庞大的库,其中包含了很多可重用的代码和一个提供安全性.跨操作系统的可移植性以及自动垃圾收集等服务的执行环境. 2.JDK 和 ...

  6. amd cpu不能在cmd环境下运行java代码_如何在Windows10中配置java的JDK环境

    今天给大家分享一下如何配置java的JDK环境.操作步骤如下: 1.下载好 jdk 的安装文件,我下载的是 jdk-10.0.1_windows-x64_bin.exe 这个版本的安装文件: 2.使用 ...

  7. aixs1 生成java代码_通过axis1.4 来生成java客户端代码

    1.首先下载axis-1.4所有的jar包, 2.我是直接打开cmd,进入到该jar包的目录下, 3.直接运行命令(运行这个命令之前要确定java的环境变量都已配置好): java -Djava.ex ...

  8. 关于equals的Java代码_与equals方法相关的Java代码

    t3.equals(t3)是唯一具有与方法签名public boolean equals (Test testje)匹配的正确参数的行,因此它是程序中唯一实际调用该print语句的行. 这个问题旨在教 ...

  9. java幻灯片播放代码_简单常用的幻灯片播放实现代码

    幻灯片自动播放图片是当前网站比较流行的一个展示方式.在网上我们能找到各种特效丰富的幻灯片插件和代码.这里项目需要,我自己做了一个简单的,就不详细讲解了,代码很简单.直接看效果图和代码吧. 所有代码 p ...

  10. java框架_这篇让你吃透Java集合框架!

    作者:平凡希 cnblogs.com/xiaoxi/p/6089984.html 一.集合框架图 简化图: 说明:对于以上的框架图有如下几点说明 1.所有集合类都位于java.util包下.Java的 ...

最新文章

  1. 网络通道联调及SSH服务启动
  2. 算法6-1:哈希函数
  3. H5添加禁止缩放功能
  4. ORACLE中数据类型
  5. dem聚类只能成为一类
  6. 2-7 StatusStrip 控件
  7. Edge浏览器+百度翻译:识别图片类PDF中的文字并翻译
  8. Nginx工作原理和优化、漏洞
  9. MAC 安装JDK(附JDK下载地址)
  10. javascript Date format(js日期格式化)
  11. [WebGL入门]二十一,从平行光源发出的光
  12. 业务与信令-第5章VoLTE原理
  13. Sonatype Nexus: Recommended file descriptor limit is 65536 but count is 4096
  14. Android增强现实(三)-3D模型展示器
  15. 解决python的selenium打开edge浏览器,但是无法打开网页driver.get的方法
  16. Springboot 工具类@Value取不到值
  17. 无营业执照开通微信商家码0.38%费率商户自助提交步骤
  18. 目标检测YOLO实战应用案例100讲-基于深度学习的交通场景多尺度目标检测算法研究与应用
  19. 王天羲:构建以客户中心的全整合企业
  20. 什么是大数据?大数据用来干嘛?

热门文章

  1. 吴恩达神经网络和深度学习-学习笔记-36-网络中的网络以及1×1卷积
  2. 吴恩达神经网络和深度学习-学习笔记-21-何时该改变开发集+测试集或指标
  3. python机器学习案例系列教程——优化,寻找使成本函数最小的最优解
  4. Ubuntu虚拟机环境下安装Python3.6
  5. basys3利用microblaze连接Pmod ad2
  6. springdata和mysql_Spring Boot使用Spring Data JPA访问MySQL数据库
  7. SpringBoot:第一篇 新建spring boot 应用
  8. 用友u8采购发票如何取消审核
  9. 洛谷 P3807 【模板】卢卡斯定理
  10. Response实现文件下载