当前位置: 首页 > article >正文

重温经典算法——希尔排序


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

在这里插入图片描述

基本原理

希尔排序是插入排序的改进版,通过按增量分组并逐步缩小增量实现排序。时间复杂度取决于增量序列,平均约为 O(n log n) 到 O(n^(3/2)),空间复杂度 O(1),不稳定排序,适合中等规模数据。

代码实现

import java.util.Arrays;public class ShellSort {public static void shellSort(int[] arr) {int n = arr.length;// 使用 Knuth 增量序列(h = 3*h + 1)int h = 1;while (h < n / 3) h = 3 * h + 1; // 计算最大初始增量while (h >= 1) {// 按增量 h 进行插入排序for (int i = h; i < n; i++) {int current = arr[i];int j = i;// 在子数组中反向插入排序while (j >= h && arr[j - h] > current) {arr[j] = arr[j - h];j -= h;}arr[j] = current;}h /= 3; // 缩小增量}}public static void main(String[] args) {int[] arr = {8, 3, 1, 4, 6, 7, 2, 5};shellSort(arr);System.out.println("Sorted array: " + Arrays.toString(arr));// 输出:Sorted array: [1, 2, 3, 4, 5, 6, 7, 8]}
}
http://www.lryc.cn/news/2400684.html

相关文章:

  • CortexON:开源的多代理AI系统无缝自动化和简化日常任务
  • 海信IP810N-海思MV320芯片-安卓9-2+16G-免拆优盘卡刷固件包
  • 【Golang】使用gin框架导出excel和csv文件
  • 【unity游戏开发入门到精通——通用篇】AssetBundle(AB包)和AssetBundleBrowser的使用介绍
  • 2025年6月4日收获
  • leetcode hot100 链表(二)
  • 6. MySQL基本查询
  • JavaWeb简介
  • CMS32M65xx/67xx系列CoreMark跑分测试
  • 中国区域30m/15天植被覆盖度数据集(2010-2022)
  • LabVIEW准分子激光器智能控制系统
  • 微服务面试资料1
  • Pytest Fixture 详解
  • 力扣HOT100之二分查找:74. 搜索二维矩阵
  • 【前端】前后端通信
  • 编程技能:格式化打印04,sprintf
  • C语言基础(11)【函数1】
  • R语言基础| 下载、安装
  • 【hive sql】窗口函数
  • Ubuntu24.04 交叉编译 aarch64 ffmpeg
  • 《AI角色扮演反诈技术解析:原理、架构与核心挑战》
  • 微软的新系统Windows12未来有哪些新特性
  • 树莓派超全系列教程文档--(54)如何使用rsync在计算机之间同步文件夹
  • 华为ICT和AI智能应用
  • ROS2与Unitree机器人集成指南
  • 在虚拟宇宙中低语——进程间通信,Linux命名管道的前世今生
  • Cursor 工具项目构建指南:Java 21 环境下的 Spring Boot Prompt Rules 约束
  • 各个布局的区别以及示例
  • 什么是MVC?
  • STM32的ADC简介