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

相关文章:

  • 拖拽实现+摇杆实现
  • 【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.太平洋大西洋水流问题
  • 奥古斯都时代的历史学家李维
  • 香港特区立法会通过条例草案便利外地公司迁册来港
  • 阿坝州委书记徐芝文已任四川省政府党组成员
  • 王毅谈中拉论坛第四届部长级会议重要共识
  • 佩斯科夫:若普京认为必要,将公布土耳其谈判俄方代表人选
  • 王毅集体会见加勒比建交国外长及代表