java数据结构之希尔排序

 更新时间:2017年11月09日 16:42:15   作者:阿木侠  
这篇文章主要为大家详细介绍了java数据结构之希尔排序的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。

希尔排序是基于插入排序的以下两点性质而提出改进方法的:

        插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;
        但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位。

实现

       先取一个正整数d1 < n, 把所有相隔d1的记录放一组,每个组内进行直接插入排序;然后d2 < d1,重复上述分组和排序操作;直至di = 1,即所有记录放进一个组中排序为止。

简单例子:

import java.util.Arrays;
public class Demo4 {
 public static void main(String[] args) {
 int old[] = { 2, 5, 3, 8, 6, 9, 4 };
 int i,j,temp; 
 int gap = 1; 
 int len = old.length; 
 while (gap < len / 3) { 
  gap = gap * 3 + 1; 
 } 
 for (; gap > 0; gap /= 3) { 
  for (i = gap; i < len; i++) { 
   temp = old[i]; 
   for (j = i - gap; j >= 0 && old[j] > temp; j -= gap) { 
    old[j + gap] = old[j]; 
   } 
   old[j + gap] = temp; 
  } 
 } 
 System.out.println("new:"+Arrays.toString(old)); 
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot Starter依赖原理与实例详解

    SpringBoot Starter依赖原理与实例详解

    SpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息的困扰
    2022-09-09
  • Quarkus中的依赖注入DI和面向切面aop编程

    Quarkus中的依赖注入DI和面向切面aop编程

    这篇文章主要为大家介绍了Quarkus中的依赖注入DI和面向切面aop的编程规范思想,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • springboot 项目启动后无日志输出直接结束的解决

    springboot 项目启动后无日志输出直接结束的解决

    这篇文章主要介绍了springboot 项目启动后无日志输出直接结束的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Spring中property-placeholder的使用与解析详解

    Spring中property-placeholder的使用与解析详解

    本篇文章主要介绍了Spring中property-placeholder的使用与解析详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • java返回json请求中文变成问号的问题及解决

    java返回json请求中文变成问号的问题及解决

    这篇文章主要介绍了java返回json请求中文变成问号的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 从零实现一个简单的Spring Bean容器的代码案例

    从零实现一个简单的Spring Bean容器的代码案例

    Spring是一个非常流行的Java Web开发框架,它提供了强大的依赖注入、面向切面编程、声明式事务管理等功能,为开发者提供了高效、快速地构建Web应用程序的工具,在这篇文章中,咱们将一步一步地构建一个简单的SpringBean容器,需要的朋友可以参考下
    2023-06-06
  • SpringBoot超详细讲解Thymeleaf模板引擎

    SpringBoot超详细讲解Thymeleaf模板引擎

    这篇文章主要分享了Spring Boot整合使用Thymeleaf,Thymeleaf是新一代的Java模板引擎,类似于Velocity、FreeMarker等传统引擎,关于其更多相关内容,需要的小伙伴可以参考一下
    2022-07-07
  • MyBatis-plus更新对象时将字段值更新为null的实现方式

    MyBatis-plus更新对象时将字段值更新为null的实现方式

    mybatis-plus在执行更新操作,当更新字段为 空字符串 或者 null 的则不会执行更新,如果要将指定字段更新null,可以通过以下三种方式实现,感兴趣的小伙伴跟着小编一起来看看吧
    2023-10-10
  • 详解在SpringBoot中使用MongoDb做单元测试的代码

    详解在SpringBoot中使用MongoDb做单元测试的代码

    这篇文章主要介绍了详解在SpringBoot中使用MongoDb做单元测试的代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • java中int初始化可以为0,但不能为NULL问题

    java中int初始化可以为0,但不能为NULL问题

    这篇文章主要介绍了java中int初始化可以为0,但不能为NULL问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02

最新评论