java 数据结构基本算法希尔排序

 更新时间:2017年08月03日 17:14:12   作者:阿信sxq  
这篇文章主要介绍了数据结构基本算法希尔排序的相关资料,需要的朋友可以参考下

C语言数据结构基本算法希尔排序

前言:

基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序, 然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。

实现代码:

public class ShellSort {

  /**
   * 原理:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的
   * 下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,
   * 在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。
   *
   * @author 阿信sxq-2015年7月16日
   *
   * @param args
   */
  public static void main(String[] args) {
    int a[] = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 5, 4, 62, 99, 98, 54,
         56, 17, 18, 23, 34, 15, 35, 25, 53, 51 };
    int d = a.length;
    int temp = 0;

    while (true) {
      d = d / 2;
      for (int x = 0; x < d; x++) {
        //对每一个组进行直接插入排序
        for (int i = x + d; i < a.length; i += d) {
          int j = i - d;
          temp = a[i];
          for (; j >= 0 && temp < a[j]; j -= d) {
            a[j + d] = a[j];
          }
          a[j + d] = temp;
        }
      }

      if (d == 1) {
        break;
      }
    }

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

  }

}

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • SpringData JPA快速上手之关联查询及JPQL语句书写详解

    SpringData JPA快速上手之关联查询及JPQL语句书写详解

    JPA都有SpringBoot的官方直接提供的starter,而Mybatis没有,直到SpringBoot 3才开始加入到官方模版中,这篇文章主要介绍了SpringData JPA快速上手,关联查询,JPQL语句书写的相关知识,感兴趣的朋友一起看看吧
    2023-09-09
  • CountDownLatch和Atomic原子操作类源码解析

    CountDownLatch和Atomic原子操作类源码解析

    这篇文章主要为大家介绍了CountDownLatch和Atomic原子操作类的源码解析以及理解应用,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • 升级dubbo2.7.4.1版本平滑迁移到注册中心nacos

    升级dubbo2.7.4.1版本平滑迁移到注册中心nacos

    这篇文章主要为大家介绍了2.7.4.1的dubbo平滑迁移到注册中心nacos的两种版本升级方案,以及为什要升级,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2022-02-02
  • Java IO流对文件File操作

    Java IO流对文件File操作

    这篇文章主要介绍了Java IO流对文件File操作,java封装的一个操作文件及文件夹(目录)的对象。可以操作磁盘上的任何一个文件和文件夹
    2022-12-12
  • jar命令修改jar包中的application.yml配置文件

    jar命令修改jar包中的application.yml配置文件

    本文主要介绍了jar命令修改jar包中的application.yml配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • SpringBoot Profiles 多环境配置及切换

    SpringBoot Profiles 多环境配置及切换

    大部分情况下,我们开发的产品应用都会根据不同的目的,所以需要支持不同的环境,本文主要介绍了SpringBoot Profiles 多环境配置及切换,感兴趣的可以了解一下
    2021-12-12
  • 详解Java如何实现在PDF中插入,替换或删除图像

    详解Java如何实现在PDF中插入,替换或删除图像

    图文并茂的内容往往让人看起来更加舒服,如果只是文字内容的累加,往往会使读者产生视觉疲劳。搭配精美的文章配图则会使文章内容更加丰富。那我们要如何在PDF中插入、替换或删除图像呢?别担心,今天为大家介绍一种高效便捷的方法
    2023-01-01
  • java使用iterator遍历指定目录示例分享

    java使用iterator遍历指定目录示例分享

    这篇文章主要介绍了java使用iterator遍历指定目录示例,需要的朋友可以参考下
    2014-04-04
  • Java括号匹配举例详解

    Java括号匹配举例详解

    看到大家对括号匹配问题很感兴趣,下面这篇文章主要给大家介绍了关于Java括号匹配的相关资料,括号匹配是一种常见的编程问题,涉及到在给定的字符串中判断括号是否匹配,需要的朋友可以参考下
    2023-10-10
  • springmvc重定向实现方法解析

    springmvc重定向实现方法解析

    这篇文章主要介绍了springmvc重定向实现方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01

最新评论