当前位置: 首页 > 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]}
}

相关文章:

  • 乡村三维建模 | 江苏农田无人机建模案例
  • 如何解决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私有云安全,一机多用
  • web前端和网站开发的区别/中国国家人事人才培训网官网
  • 学外贸英语的网站/新东方在线教育平台官网
  • wordpress 登录后可查看/杭州最好的seo公司
  • 做外汇模拟的网站/培训心得简短
  • 怎么用python做网站/朋友圈产品推广文案
  • 企业做营销网站/网络推广策划方案怎么写