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

希尔排序算法

一 概述

     希尔排序(Shell Sort)是一种基于插入排序的改进算法,通过分组插入排序逐步减少元素移动次数,提升排序效率。其核心思想是“增量分组+逐步逼近有序”。

二  选择增量序列
       希尔排序的核心是动态缩小增量(间隔)。通常初始增量取数组长度的一半,之后逐步减半直至为1。  
       本例数组[6 5 7 8 2]长度为5,增量序列为:gap = 2 ->1。

二 按增量分组并插入排序

1  第1轮:gap=2
       将数组分为2个子序列(间隔为2):
       子序列1:索引0、2、4 → $[6, 7, 2]$  
       插入排序后 → [2, 6, 7]  
       子序列2:索引1、3 → [5, 8]
       插入排序后保持 [5, 8]

      排序后数组变为:  [2, 5, 6,8,7]

 

2  第2轮:gap=1
     此时增量减为1,即对整个数组进行标准插入排序:
   比较索引1的5:无需移动。
   比较索引2的6:无需移动。
   比较索引3的8:无需移动。
   比较索引4的7:需插入到8前面 → 交换8和7。

    最终有序数组:  [2,5, 6, 7, 8]

三、C++代码实现

#include <iostream>
using namespace std;

void shellSort(int arr[], int n

http://www.dtcms.com/a/75999.html

相关文章:

  • 拖拽实现+摇杆实现
  • 【AVRCP】蓝牙协议栈深度解析:AVCTP互操作性核心机制与实现细节
  • 织梦DedeCMS优化文章模版里的“顶一下”与“踩一下”样式
  • C++ 多生产者单消费者(MPSC)模式
  • DeepSeek辅助学术写作中期能力及提示词分享
  • C++反向迭代器
  • kafka指北
  • 计算机组成相关知识
  • Sqlserver安全篇之_启用和禁用Named Pipes的案列介绍
  • 【css酷炫效果】纯CSS实现立体旋转立方体
  • Spring Boot 整合 Nacos 注册中心终极指南
  • 嵌入式Linux——gcc和Makefile
  • C++ list类
  • 强化学习(赵世钰版)-学习笔记(8.值函数方法)
  • 定义模型生成数据表
  • Linux top 命令详解:从入门到高级用法
  • WebRTC、WebSocket、EasyRTC嵌入式音视频SDK:技术差异与应用场景详细对比
  • C++刷题(三):string
  • c++--vector
  • leecode417.太平洋大西洋水流问题
  • PyQt5 - Groove 启用高 DPI 支持,使得应用程序能够自动适应不同的屏幕分辨率
  • numpy学习笔记6:np.sin(a) 的详细解释
  • 《声音的未来:语音识别文献解读》专栏介绍及其文章解读目录
  • 微学习:提高企业培训效率的创新方式
  • 挖矿------获取以太坊测试币
  • 基于大模型的慢性鼻窦炎全周期预测与治疗方案研究报告
  • 云钥科技工业相机定制服务,助力企业实现智能智造
  • PCL 高斯函数拟合(正太分布)
  • 《TCP/IP网络编程》学习笔记 | Chapter 19:Windows 平台下线程的使用
  • 【Java项目】基于JSP的智能停车场管理系统