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

发布时间 - 2026-01-11 02:38:16    点击率:

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));

  }

}

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


# 数据结构基本算法希尔排序  # 希尔排序的算法  # java数据结构之插入排序  # java数据结构与算法之插入排序详解  # javascript数据结构之双链表插入排序实例详解  # Java数据结构及算法实例:插入排序 Insertion Sort  # java数据结构之希尔排序  # Java数据结构之插入排序与希尔排序  # 组中  # 再用  # 较小  # 对它  # 希尔  # 每组  # 中再  # 如有  # 数据结构  # 希望能  # 谢谢大家  # 阿信  # 疑问请  # void  # main  # param  # args  # static  # String  # int 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 济南网站建设制作公司,室内设计网站一般都有哪些功能?  如何快速辨别茅台真假?关键步骤解析  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  简历在线制作网站免费版,如何创建个人简历?  如何正确下载安装西数主机建站助手?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  如何确认建站备案号应放置的具体位置?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  香港服务器选型指南:免备案配置与高效建站方案解析  微信推文制作网站有哪些,怎么做微信推文,急?  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  网站制作软件免费下载安装,有哪些免费下载的软件网站?  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  Laravel如何自定义错误页面(404, 500)?(代码示例)  如何用AI帮你把自己的生活经历写成一个有趣的故事?  英语简历制作免费网站推荐,如何将简历翻译成英文?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  如何快速搭建高效简练网站?  Laravel怎么实现模型属性的自动加密  如何在 React 中条件性地遍历数组并渲染元素  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  C语言设计一个闪闪的圣诞树  如何用花生壳三步快速搭建专属网站?  在线教育网站制作平台,山西立德教育官网?  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  Android Socket接口实现即时通讯实例代码  Laravel如何使用模型观察者?(Observer代码示例)  香港服务器网站推广:SEO优化与外贸独立站搭建策略  装修招标网站设计制作流程,装修招标流程?  南京网站制作费用,南京远驱官方网站?  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  Laravel如何为API生成Swagger或OpenAPI文档  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  如何在阿里云香港服务器快速搭建网站?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  java ZXing生成二维码及条码实例分享  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  如何用PHP工具快速搭建高效网站?  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  如何快速搭建自助建站会员专属系统?