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

【分布式理论17】分布式调度3:分布式架构-从中央式调度到共享状态调度

文章目录

    • 一、中央式调度器
      • 1. 核心思想
      • 2. 工作流程
      • 3. 优缺点
      • 4. **典型案例:Google Borg**
    • 二、两级调度器
      • 1. **核心思想**
      • 2. **工作流程**
      • 3. 优缺点
      • 4. **典型案例:Hadoop YARN**
    • 三、共享状态调度器
      • 1. **核心思想**
      • 2. **工作流程**
      • 3. 优缺点
      • 4. **典型案例:Google Omega**
    • 四、三种调度架构的对比

在分布式系统中,调度器是任务与资源之间的纽带,负责将计算任务分配到合适的资源节点上执行。随着分布式系统规模的扩大和任务复杂度的增加,调度器的架构也在不断演进。

本文将详细介绍三种主流的分布式调度架构:中央式调度器两级调度器共享状态调度器,并通过实际案例(如 Google Borg、Hadoop YARN 和 Google Omega)深入探讨其工作原理、优缺点及适用场景。

 

一、中央式调度器

1. 核心思想

中央式调度器(Monolithic Scheduler)是分布式调度架构中最简单的一种形式。它由一个全局协调者(调度器)负责管理整个集群的资源,并分配任务到合适的节点上执行。调度器维护资源列表和任务列表,通过全局调度策略实现任务与资源的匹配。

 

2. 工作流程

在这里插入图片描述

  1. 资源收集:调度器通过集群中节点上的资源管理器收集各节点的资源信息。
  2. 任务接收:调度器接收用户提交的计算任务。
  3. 任务分配:调度器根据调度策略将任务分配到合适的节点上执行。

 

3. 优缺点

  • 全局优化:调度器掌握全局资源信息,能够实现最优的任务分配。
  • 实现简单:架构清晰,易于理解和实现。
  • 单点故障:调度器一旦故障,整个系统无法工作。
  • 性能瓶颈:所有任务请求和调度都集中在一个调度器上,容易成为系统的性能瓶颈。

 

4. 典型案例:Google Borg

  • 架构:Borg 是 Google 内部的集群资源管理系统,管理数万台服务器和数十万个作业。
  • 调度过程
    1. 用户提交作业,Borg 将作业中的任务加入执行队列。
    2. 调度器扫描任务队列,将任务分配到满足资源条件和约束的节点上。
    3. 节点上的 Borglet 负责管理本地任务和资源,并向 BorgMaster 汇报状态。
  • 特点
    • 支持高可靠性和高可用性。
    • 通过约束条件(如处理器架构、OS 版本)实现资源的精确分配。

 

二、两级调度器

1. 核心思想

两级调度器(Two-Level Scheduler)将调度器分为两层:

  • 一级调度器:负责资源管理和任务状态维护。
  • 二级调度器:负责任务与资源的匹配,针对不同的计算框架(如 Spark、MapReduce)进行扩展。

2. 工作流程

在这里插入图片描述

  1. 资源收集:一级调度器通过节点上的资源管理器收集资源信息。
  2. 任务接收:一级调度器接收用户提交的计算任务,并将其交给二级调度器处理。
  3. 任务分配:二级调度器根据计算框架的调度策略将任务分配到合适的节点上。
  4. 任务执行:节点执行任务,并将结果返回给一级调度器。

 

3. 优缺点

  • 扩展性强:通过二级调度器支持多种计算框架。
  • 并发性高:能够处理高并发的任务请求。
  • 全局优化受限:二级调度器无法获取全局资源信息,难以实现最优调度。
  • 悲观锁限制:采用悲观锁机制,可能导致并发量受限。

 

4. 典型案例:Hadoop YARN

  • 架构:YARN(Yet Another Resource Negotiator)是 Hadoop 2.0 的资源管理系统,采用两级调度架构。
  • 组件
    • Resource Manager:全局资源管理器,负责任务调度和资源分配。
    • Application Master:单个作业的管理器,负责任务的拆分和资源申请。
    • Node Manager:节点资源管理器,负责本地资源的管理和任务执行。
  • 调度过程
    1. 用户提交作业,Resource Manager 启动 Application Master。
    2. Application Master 向 Resource Manager 申请资源,并将任务分配到 Node Manager 上执行。
    3. Node Manager 启动任务,并将状态同步给 Application Master。

 

三、共享状态调度器

1. 核心思想

共享状态调度器(Shared-State Scheduler)通过共享全局资源状态,使每个调度器都能获取集群中的所有资源信息,从而实现全局优化。它采用乐观锁机制,支持高并发的任务调度。

 

2. 工作流程

  1. 资源同步:调度器从共享存储(如 State Storage)中同步全局资源状态。
  2. 任务分配:调度器根据全局资源状态将任务分配到合适的节点上。
  3. 冲突检测:采用乐观锁机制,在任务提交时检测资源冲突。
  4. 任务执行:节点执行任务,并将结果返回给调度器。

 

3. 优缺点

  • 全局优化:每个调度器都能获取全局资源信息,实现最优调度。
  • 高并发:采用乐观锁机制,支持高并发的任务调度。
  • 实现复杂:需要维护全局资源状态,并处理资源冲突。
  • 一致性挑战:在分布式环境下,保证资源状态的一致性较为困难。

 

4. 典型案例:Google Omega

  • 架构:Omega 是 Google 提出的共享状态调度器,采用乐观锁机制实现高并发调度。
  • 调度过程
    1. 调度器从 State Storage 中同步全局资源状态。
    2. 调度器将作业拆分为多个任务,并为每个任务分配资源。
    3. 采用乐观锁机制检测资源冲突,确保任务执行的原子性。
    4. 任务执行完成后,释放资源并更新全局资源状态。

 

四、三种调度架构的对比

特性中央式调度器两级调度器共享状态调度器
核心思想单一调度器管理全局资源资源管理与任务调度分离共享全局资源状态,支持高并发
优点全局优化,实现简单扩展性强,支持多种计算框架全局优化,高并发
缺点单点故障,性能瓶颈全局优化受限,悲观锁限制实现复杂,一致性挑战
适用场景小规模集群中等规模集群大规模集群
典型案例Google BorgHadoop YARNGoogle Omega

分布式调度架构从中央式调度器两级调度器,再到共享状态调度器,经历了从简单到复杂、从集中到分布式的演进过程。每种架构都有其独特的优势和适用场景:

  • 中央式调度器适合小规模集群,实现简单但存在单点故障风险。
  • 两级调度器通过分层设计支持多种计算框架,适合中等规模集群。
  • 共享状态调度器通过共享全局资源状态和乐观锁机制,实现高并发和全局优化,适合大规模集群。

在实际应用中,应根据系统规模、任务复杂度和性能需求选择合适的调度架构,以实现资源的高效利用和任务的最优调度。

 
 
参考:《分布式架构原理与实现》

相关文章:

【分布式理论17】分布式调度3:分布式架构-从中央式调度到共享状态调度

文章目录 一、中央式调度器1. 核心思想2. 工作流程3. 优缺点4. **典型案例:Google Borg** 二、两级调度器1. **核心思想**2. **工作流程**3. 优缺点4. **典型案例:Hadoop YARN** 三、共享状态调度器1. **核心思想**2. **工作流程**3. 优缺点4. **典型案例…...

Java高频面试之并发编程-04

hello啊,各位观众姥爷们!!!本baby今天来报道了!哈哈哈哈哈嗝🐶 面试官:调用 start()方法时会执行 run()方法,那为什么不直接调用 run()方法? 多线程中调用 start() 方法…...

2025Java面试指南(附答案)

Java全家桶 Java基础 1. Java为什么被称为平台无关性语言? 2. 解释下什么是面向对象?面向对象和面向过程的区别 3. 面向对象的三大特性?分别解释下? 4. Java 中的参数传递时传值呢?还是传引用? 5. JD…...

springboot对接阿里云大模型

阿里云百炼文档地址: 百炼控制台 设置账号 首先跟着文档设置账号,新建一个api key 文档地址: 百炼控制台 对接会话API 你可以使用sdk来对接,但没有必要,因为所有接口对接都是http形式的,直接使用http库来对接就行了&#xff…...

理性决策与情绪偏差

“在愤怒中做决策,你会在懊悔中收拾残局。”—本杰明富兰克林 在情绪激动时,我们往往容易做出冲动的决定。但等情绪平复,回过头来看,常常会发现这些决定并不如我们当初所想的那样明智。诺贝尔经济学奖得主在其行为经济学研究中提…...

基于LLM的响应式流式处理实践:提升用户体验的关键技术

基于LLM的响应式流式处理实践:提升用户体验的关键技术 前言:当AI生成遇到用户等待焦虑 在人工智能应用井喷式发展的今天,大语言模型(LLM)的文本生成延迟问题始终是开发者需要直面的挑战。想象这样一个场景&#xff1…...

2025年渗透测试面试题总结-拷打题库09(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 2025年渗透测试面试题总结-拷打题库09 1. Linux系统加固降权思路 2. 系统后门检测工具 3. 绕过CDN获…...

批量替换多个 Word 文档中的指定图片

在 Word 文档中,我们可以插入各种各样的图片,比如插入 logo、插入设计图、施工图等等。在某些情况下,我们也会碰到需要将 Word 文档中某张图片替换成其它图片的场景,比如将旧的 Logo 替换成新的 Logo。当我们有大量的 Word 文档需…...

海外版高端Apple科技汽车共享投资理财系统

这一款PHP海外版高端Apple、科技汽车、共享投资理财系统phplaravel框架。...

【Unity iOS打包】报错解决记录

打包报错1: Invalid Bundle. The bundle at ProductName.app/Frameworks/UnityFramework.framework contains disallowed file Frameworks. (ID: 87a95518-52e2-4ce0-983d-aab8d8006f11) 解决: Target > UnityFramework > Build Settings > Bu…...

新能源汽车零部件功率级测试方案搭建研究

摘要:本文旨在针对新能源汽车核心零部件功率级测试需求,提出基于Python与PyVISA的自动化测试方案。通过集成主流设备(如Keysight 34980A、功率分析仪等),构建多协议兼容(CAN、RS485等)的测试平台…...

DeepSeek与WPS的动态数据可视化图表构建

摘要 在数据驱动决策的时代,动态数据可视化对于信息的高效传递与分析至关重要。本文聚焦于利用DeepSeek和WPS实现近百种动态数据可视化图表的技术应用,详细阐述其操作流程、技术原理及潜在价值。通过深入剖析这一技术组合的应用场景与实践意义&#xff0…...

XCTF-web(五)

Web_php_unserialize 当通过KaTeX parse error: Expected group after _ at position 42: …erialize,触发魔术方法_̲_wakeup和__destr…this->file)输出文件内容,若KaTeX parse error: Expected group after _ at position 17: …ile可控&#xff0…...

数字ic后端设计从入门到精通2(含fusion compiler, tcl教学)

上篇回顾 上一篇文章需要讨论了net,pin的基础用法,让我们来看一下高级一点的用法 instance current_instance current_instance 是 Synopsys 工具(如 Fusion Compiler 或 Design Compiler)中用于在设计层次结构中导航的关键命令。它允许用…...

Vue2集成ElementUI实现左侧菜单导航

文章目录 简介静态导航安装element-ui,vue-router,vuex编写router/index.jsmain.js中引入elementui,router编写左侧导航返回的菜单数据 动态导航编写router/index.js左侧菜单通过for循环生成通过for循环递归生成 store/index.jsmain.js中引入store登录页面代码菜单返回数据 总结…...

Flask API 项目 Swagger 版本打架不兼容

Flask API 项目 Swagger 版本打架不兼容 1. 问题背景 在使用 Flask 3.0.0 时遇到以下问题: 安装 flask_restful_swagger 时,它强制将 Flask 降级到 1.1.4,并导致其他依赖(如 flask-sqlalchemy、flask-apispec)出现版…...

spark和Hadoop的区别和联系

区别 计算模型 Hadoop:主要基于 MapReduce 计算模型,将任务分为 Map 和 Reduce 两个阶段,适合处理大规模的批处理数据,但在处理迭代式计算和交互式查询时性能相对较差。Spark:基于内存的分布式计算框架,采…...

Unity接入安卓SDK(2)接入方式

1 方式一:SDK打成aar形式放入Unity 把SDK编译成aar,然后把aar文件、manifest文件放入Unity工程的Assets/Plugins/Android目录下,以及libs下,没有的文件夹就自己新建. SDK的aar包也可以放入Assets/Plugins/Android目录中 其中一…...

【HDFS入门】深入解析DistCp:Hadoop分布式拷贝工具的原理与实践

目录 1 DistCp概述与应用场景 2 DistCp架构设计解析 2.1 系统架构图 2.2 执行流程图 3 DistCp核心技术原理 3.1 并行拷贝机制 3.2 断点续传实现原理 4 DistCp实战指南 4.1 常用命令示例 4.2 性能优化策略 5 异常处理与监控 5.1 常见错误处理流程 5.2 监控指标建议…...

电力MOSFET漏源过电压与窄脉冲自保护驱动电路

1 电力MOSFET的漏源过电压 2 窄脉冲自保护驱动电路说明 3 脉冲变压器设计说明 1 电力MOSFET的漏源过电压 如果器件接有感性负载,则当器件关断时,漏极电流的突变(di/dt)会产生比外部电源高的多的漏极尖峰电压,导致器件的击穿。电力MOSFET关断得越快,产生的过电压越高…...

【scikit-learn基础】--『监督学习』之 均值聚类

聚类算法属于无监督学习,其中最常见的是均值聚类,scikit-learn中,有两种常用的均值聚类算法: 一种是有名的K-means(也就是K-均值)聚类算法,这个算法几乎是学习聚类必会提到的算法; 另一个是均值偏移聚类,它与K-means各有千秋,只是针对的应用场景不太一样,但是知名度…...

Android 15强制edge-to-edge全面屏体验

一、背景 Edge-to-edge 全面屏体验并非 Android 15 才有的新功能,早在 Android 15 之前系统就已支持。然而,该功能推出多年来,众多应用程序依旧未针对全面屏体验进行适配。因此,在 Android 15 的更新中,Google 终于决…...

广州可信数据空间上线:1个城市枢纽+N个产业专区+高质量数据集(附28个数据集清单)

广州数据要素市场今日迎来历史性突破!全国首个城市可信数据空间正式上线,首批28个高质量数据集同步出台,覆盖生物医药、智能装备、绿色低碳等12大产业领域,激活37个高价值场景。 一、广州城市可信数据空间:1个城市枢纽…...

AgentGPT开源程序可以在浏览器中组装、配置和部署自主人工智能代理

一、软件介绍 文末提供程序和源码下载学习 AgentGPT开源程序可以允许您配置和部署自主 AI 代理。命名您自己的定制 AI 并让它开始实现任何可想象的目标。它将通过思考要执行的任务、执行它们并从结果中学习来尝试达到目标。 二、开始使用 AgentGPT 入门最简单的方式是使用项目…...

前端笔记-Axios

Axios学习目标 Axios与API交互1、Axios配置与使用2、请求/响应拦截器3、API设计模式(了解RESTful风格即可) 学习参考:起步 | Axios中文文档 | Axios中文网 什么是Axios Axios 是一个基于 Promise 的现代化 HTTP 客户端库,专…...

【EasyPan】MySQL主键与索引核心作用解析

【EasyPan】项目常见问题解答(自用&持续更新中…)汇总版 MySQL主键与索引核心作用解析 一、主键(PRIMARY KEY)核心作用 1. 数据唯一标识 -- 创建表时定义主键 CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,use…...

基于RK3588+FPGA+AI YOLO的无人船目标检测系统(一)概述

无人船在海洋监测、资源勘测、海上安全和科学研究等领域扮演着关键角色, 提升了海上任务的执行效率和安全性。在这一过程中,环境感知技术和目标检测 技术相辅相成,共同构建了系统的核心功能。随着人工智能行业的迅速发展,各 种…...

无人船 | 图解基于PID控制的路径跟踪算法(以全驱动无人艇WAMV为例)

目录 1 PID控制基本原理2 基于全驱动运动学的PID控制3 跟踪效果分析 1 PID控制基本原理 PID控制是一种常用的经典控制算法,其应用背景广泛,例如 工业自动化控制:温度控制、压力控制、流量控制、液位控制等过程控制系统多采用PID闭环&#x…...

为什么RPN经过的候选框处理后,要使用rcnn来进行候选框的分类和回归操作?

一句大白话总结:RPN是广撒网捕鱼,RCNN是细化鱼的分类和具体尺寸 在目标检测任务中,RPN(区域提议网络) 生成的候选框需要经过 RCNN(如 Fast R-CNN、Faster R-CNN) 进行分类和回归,这…...

代码实战保险花销预测

文章目录 摘要项目地址实战代码(初级版)实战代码(进阶版) 摘要 本文介绍了一个完整的机器学习流程项目,重点涵盖了多元线性回归的建模与评估方法。项目详细讲解了特征工程中的多项实用技巧,包括&#xff1…...

8.1 线性变换的思想

一、线性变换的概念 当一个矩阵 A A A 乘一个向量 v \boldsymbol v v 时,它将 v \boldsymbol v v “变换” 成另一个向量 A v A\boldsymbol v Av. 输入 v \boldsymbol v v,输出 T ( v ) A v T(\boldsymbol v)A\boldsymbol v T(v)Av. 变换 T T T…...

PythonWeb

参考:如何安装 Django |Django 文档 |姜戈 一、框架搭建 1、安装Django框架 pip3 install django 2、查看是否安装成功 pip3 show django 这样显示就是成功了 3、初始化项目 你想在哪个路径就 cd到哪个路径下输入一下命令就可以 django-admin startproject my…...

【大模型ChatGPT +DeepSeeK+python】最新AI赋能Python长时序植被遥感动态分析、物候提取、时空变异归因及RSEI生态评估

在遥感技术与人工智能深度融合的2025年,AI大模型正重塑长时序植被遥感数据分析范式。从Landsat/Sentinel卫星数据的智能化去云处理,到MODIS植被产品的AI辅助质量控制,以ChatGPT 、DeepSeeK为代表的大模型技术已成为提升遥感数据处理效率与精度…...

精益数据分析(11/126):辨别虚荣指标,挖掘数据真价值

精益数据分析(11/126):辨别虚荣指标,挖掘数据真价值 大家好!在创业和数据分析的学习道路上,我一直希望能和大家携手前行、共同进步。今天,咱们接着深入研读《精益数据分析》,这次聚…...

Time to event :Kaplan-Meier曲线、Log Rank检验与Shiny R

代码: # 创建数据框 data_a <- data.frame( usubjid = c(1- 1, 1- 2, 1- 3, 1- 4, 1- 5, 1- 6, 1- 7, 1- 8, 1- 9, 1-10, 2- 1, 2- 2, 2- 3, 2- 4, 2- 5, 2- 6, 2- 7, 2- 8, 2- 9, 2-10), cnsr = c(0,1,0,1,0,1,0,0,0,1,…...

线上救急-AWS限频

线上救急-AWS限频 问题 在一个天气炎热的下午&#xff0c;我正喝着可口可乐&#xff0c;悠闲地看着Cursor生成代码&#xff0c;忽然各大群聊中出现了加急➕全体的消息&#xff0c;当时就心里一咯噔&#xff0c;点开一看&#xff0c;果然&#xff0c;线上服务出问题&#xff0…...

JavaWeb学习打卡-Day1-分层解耦、Spring IOC、DI

三层架构 Controller&#xff08;控制层&#xff09;&#xff1a;接收前端发送的请求&#xff0c;对请求进行处理&#xff0c;并响应数据。Service&#xff08;业务逻辑层&#xff09;&#xff1a;处理具体的业务逻辑。DAO&#xff08;数据访问层/持久层&#xff09;&#xff…...

【LeetCode】1.两数之和

目录 &#x1f4da; 题目概要&#x1f9f0; 前置知识&#x1f6a7; 问题难点&#x1f511; 关键思路步骤拆解 &#x1f4bb; 代码实现代码注释 &#x1f4ca; 复杂度分析❗ 易错点与测试案例易错点测试案例 &#x1f517; 总结与扩展模式归纳核心思维 &#x1f4da; 题目概要 在…...

mongodb 存储数据的具体实现方式

MongoDB 存储数据的具体实现方式涉及数据模型、存储引擎、分片机制等多个核心模块&#xff0c;以下是其实现原理的详细分析&#xff1a; 一、数据模型 1.1 文档型数据模型‌ MongoDB 使用 BSON格式存储数据&#xff0c;支持键值对、嵌套文档和数组等复杂结构。 1.2 无模式设…...

【手机】vivo手机应用声音分离方案

文章目录 前言方案 前言 尝试分离vivo手机音乐与其他应用的声音 方案 最佳方案&#xff1a;网易云音乐设置内关闭音量均衡 上传不同的白噪音&#xff0c;成功 goodlock&#xff0c;主要适用于三星手机&#xff0c;vivo不一定适用 app volume control &#xff0c;可行...

多级缓存架构,让系统更快的跑起来!

大家好,今天,咱们来聊聊一个超级实用的话题——多级缓存架构。别一听“架构”俩字就头大,我保证,这篇文章既有趣又易懂,让你秒变缓存小达人! 一、多级缓存,为啥这么火? 在互联网的汪洋大海里,数据就是咱们的宝藏。但每次从数据库里捞数据,都跟挖宝藏似的,慢得很!…...

Vibracostic EDI 需求分析

Vibracostic 是德国Freudenberg集团旗下全球领先的减振与噪音控制技术公司&#xff0c;专注于为汽车及工业领域提供高效振动管理和隔音解决方案&#xff0c;客户涵盖宝马、奔驰、特斯拉等主流车企。 Vibracostic EDI 需求分析 供应商接收Vibracostic发来的DELFOR交付预测报文…...

基于超启发鲸鱼优化算法的混合神经网络多输入单输出回归预测模型 HHWOA-CNN-LSTM-Attention

基于超启发鲸鱼优化算法的混合神经网络多输入单输出回归预测模型 HHWOA-CNN-LSTM-Attention 随着人工智能技术的飞速发展&#xff0c;回归预测任务在很多领域得到了广泛的应用。尤其在金融、气象、医疗等领域&#xff0c;精确的回归预测模型能够为决策者提供宝贵的参考信息。为…...

Linux卸载删除gitlab

1、停止 gitlab服务 gitlab-ctl stop 2、卸载 gitlab&#xff08;社区版&#xff09; rpm -e gitlab-ce 或者 yum remove gitlab-ce 3、查看 gitlab 进程 ps aux | grep gitlab 4、杀掉gitlab service进程&#xff0c;该进程与runsvdir相关&#xff08;带有好多..........…...

高品质性价比之王-特伦斯便携钢琴V10

在电子钢琴选购过程中&#xff0c;预算与品质的平衡常常让消费者感到纠结。但特伦斯 V10 88 键可折叠电子钢琴的出现&#xff0c;为广大音乐爱好者带来了惊喜&#xff0c;亲民的价格实现了高品质的音乐体验。​ 先看便携性&#xff0c;同价位的电子钢琴大多体型庞大&#xff0c…...

解决方案评测|告别复杂配置!基于阿里云云原生应用开发平台CAP快速部署Bolt.diy

写在前面的话 突然看到上线了关于Bolt.new开源版本的解决方案测评&#xff0c;其实心里还是挺高兴的&#xff0c;我最早接触到Bolt.new的时候应该是在去年的11月份&#xff0c;当时是撰写了一篇名为一种基于通义千问prompt辅助Qwen2.5-coder-32bBolt.newv0Cursor的无代码对话…...

python测试框架之pytest

Pytest pytest 基础使用pytest安装pytest的测试case收集规则pytest - fixture的使用skip and xfailpytest - 属性标记测试函数pytest - 参数化测试pytest - mock/monkeypatch的使用pytest - 运行方式pytest - 运行方式/命令pytest - 处理测试失败的case pytest - 测试输出捕获 …...

uni-app 开发企业级小程序课程

课程大小&#xff1a;7.7G 课程下载&#xff1a;https://download.csdn.net/download/m0_66047725/90616393 更多资源下载&#xff1a;关注我 备注&#xff1a;缺少两个视频5-14 tabs组件进行基本的数据展示和搜索历史 处理searchData的删除操作 1-1导学.mp4 2-10小程序内…...

深度图可视化

import cv2# 1.读取一张深度图 depth_img cv2.imread("Dataset_depth/images/train/1112_0-rgb.png", cv2.IMREAD_UNCHANGED) print(depth_img.shape) cv2.imshow("depth", depth_img) # (960, 1280) print(depth_img)# 读取一张rgb的图片做对比 input_p…...

Java实现希尔排序算法

1. 希尔排序原理图解 希尔排序是插入排序的一种高效改进版本&#xff0c;通过比较和交换间隔较远的元素来减少数据的移动次数。以下是希尔排序的步骤&#xff1a; 1. 选择初始间隔&#xff1a;通常选择数组长度的一半作为初始间隔。 2. 分组和插入排序&#xff1a;将数组分成若…...