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

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


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址: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.dtcms.com/a/231187.html

相关文章:

  • 乡村三维建模 | 江苏农田无人机建模案例
  • 如何解决spring循环依赖
  • 1.36公里外的毫米级视界:遥感技术的革命性突破
  • 天机学堂(我的课表)
  • Opencl
  • 池化层-机器学习
  • 嵌入式Linux之RK3568
  • C++11 defaulted和deleted函数从入门到精通
  • Hadoop大数据集群深度实践:源码分析、参数调优与自动化运维平台选型全解
  • 基于LangChain构建高效RAG问答系统:向量检索与LLM集成实战
  • CS144 - Lecture 3
  • P3156 【深基15.例1】询问学号
  • 解决Required request part ‘file‘ is not present
  • 《操作系统真相还原》——初探内存
  • 虚拟斯德哥尔摩症候群:用户为何为缺陷AI辩护?
  • 涂胶协作机器人解决方案 | Kinova Link 6 Cobot在涂胶工业的方案应用与价值
  • ArcGIS Pro 3.4 二次开发 - 共享
  • 近几年字节飞书测开部分面试题整理
  • hadoop集群启动没有datanode解决
  • 自动化生产线,IT部署一站式解决方案-Infortrend KS私有云安全,一机多用
  • CortexON:开源的多代理AI系统无缝自动化和简化日常任务
  • 拉深工艺模块——回转体拉深件毛坯尺寸的确定(二)
  • 网络攻防技术十三:网络防火墙
  • 电工基础【6】顺序、时间控制
  • [Java 基础]枚举
  • ubutu修改网关
  • 分类预测 | Matlab实现CNN-BiLSTM-Attention高光谱数据分类预测
  • VSCode 工作区配置文件通用模板创建脚本
  • JavaScript中的正则表达式:文本处理的瑞士军刀
  • IDEA集成JRebel插件,实现实时热部署