当前位置: 首页 > 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.lqws.cn/news/141283.html

相关文章:

  • C语言数组初始化方法大全(附带实例)
  • 高速PCB设计中圆弧布线是否必要
  • ApacheSuperset CVE-2023-27524
  • L1-019 谁先倒 (15 分)
  • 慢SQL调优(二):大表查询
  • 《Offer来了:Java面试核心知识点精讲》大纲
  • 10. MySQL索引
  • Android apk装机编译类型: verify、speed-profile, speed与启动耗时
  • BUU MISC(持续更新)
  • [Java 基础]面向对象-继承
  • 得力Deli GE330W打印机信息
  • 如何流畅播放体育电竞赛事?
  • 三角形类CTriangle
  • python打卡day44
  • day 44
  • 【Bluedroid】蓝牙启动之gatt_init 流程源码解析
  • NLP学习路线图(二十二): 循环神经网络(RNN)
  • Linux进程调度:从时间片到实时任务的交响乐
  • 深入理解计算机进制:从原理到 C++ 实现
  • uniapp uni-id-co errCode“:“uni-id-captcha-required“,“errMsg“:“Captcha required
  • [华为eNSP] 在eNSP上实现IPv4地址以及IPv4静态路由的配置
  • kafka命令
  • Oj系统测试报告
  • Postgresql常规SQL语句操作
  • 软件工程:如何在项目中把软件做好
  • linux_centos7.x的ifconfig命令显示内容详解
  • 对抗性提示:大型语言模型的安全性测试
  • 【向量化模型如何私有化部署】一文说清原理、流程与最佳实践
  • 验证负载均衡与弹性伸缩
  • 猎板硬金镀层厚度:新能源汽车高压系统的可靠性基石