8640 希尔(shell)排序

### 思路
希尔排序是一种基于插入排序的排序算法,通过将待排序数组分割成多个子序列分别进行插入排序来提高效率。初始增量`d`为`n/2`,之后每次减半,直到`d`为1。
### 伪代码
1. 读取输入的待排序关键字个数`n`。
2. 读取`n`个待排序关键字并存储在数组中。
3. 对数组进行希尔排序:
- 初始化增量`d`为`n/2`。
- 当`d`大于0时,进行以下操作:
- 对每个子序列进行插入排序。
- 输出当前排序结果。
- 将增量`d`减半。
4. 重复步骤3直到排序完成。
### C++代码
#include <iostream>
#include <vector>
using namespace std;void shellSort(vector<int>& arr) {int n = arr.size();for (int d = n / 2; d > 0; d /= 2) {for (int i = d; i < n; ++i) {int temp = arr[i];int j;for (j = i; j >= d && arr[j - d] > temp; j -= d) {arr[j] = arr[j - d];}arr[j] = temp;}// 输出当前排序结果for (int k = 0; k < n; ++k) {if (k > 0) cout << " ";cout << arr[k];}cout << endl;}
}int main() {int n;cin >> n;vector<int> arr(n);for (int i = 0; i < n; ++i) {cin >> arr[i];}shellSort(arr);return 0;
}
### 总结
希尔排序通过将数组分割成多个子序列分别进行插入排序来提高效率。初始增量`d`为`n/2`,之后每次减半,直到`d`为1。每趟排序后输出当前排序结果。
相关文章:
8640 希尔(shell)排序
### 思路 希尔排序是一种基于插入排序的排序算法,通过将待排序数组分割成多个子序列分别进行插入排序来提高效率。初始增量d为n/2,之后每次减半,直到d为1。 ### 伪代码 1. 读取输入的待排序关键字个数n。 2. 读取n个待排序关键字并存储在数组…...
Linux 安装redis主从模式+哨兵模式3台节点
下载 https://download.redis.io/releases/ 解压 tar -zxvf redis-7.2.4.tar.gz -C /opt chmod 777 -R /opt/redis-7.2.4/安装 # 编译 make # 安装, 一定是大写PREFIX make PREFIX/opt/redis-7.2.4/redis/ install配置为系统服务 cd /etc/systemd/system/主服务…...
[BCSP-X2024.小高3] 学习计划
题目描述 暑假共有 n 天,第 i 天的精力指数为 a[i],你想要利用假期依次(按 1,2,...,m 顺序)复习 m 门功课,第 i 门功课的重要程度为 b[i],且每门的复习时段必须连 续,并且不能有某天不干事。 …...
Android Debug Bridge(ADB)完全指南
文章目录 前言一、什么是ADB?二、ADB的工作原理ADB由三个部分组成: 三、如何安装ADBWindows系统:macOS和Linux系统: 四、ADB常用指令大全设备相关操作1. 查看连接的设备:2. 重启设备:3. 进入Bootloader模式…...
再次重逢,愿遍地繁花
再次重逢,愿遍地繁花 我并不是一个对最终幻想7很热衷的粉丝,也并没有像那些评论区的大佬,能够轻易地说出整部世界的全貌。说到底,我只是一个看完了《最终幻想7:重制版》和《最终幻想7:重生》的爱好者罢了。…...
数据结构和算法基础(一)
文章目录 链表反转链表合并删除链表倒数第 n 个结点找链表的中间结点链表中环的检测排序算法递归 趁空闲时间刷一遍极客时间上王争的《数据结构与算法之美》课程,个人觉得写的很好,每章节由浅入深且从基础到引入设计类问题,如果写过很多代码想…...
【超长好文】网络安全从业者面试指南
文章为笔者偶然看到的github项目《网络安全面试指南》,作者FeeiCN,读完内容深感作者的用心,尽管一些观点因为时间原因与当下行情存在差异,但仍旧值得大家参考,希望能给大家在这行业寒冬带来一些启发,愿正在…...
基于大数据的高校新生数据可视化分析系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
【cache】浅析四种常用的缓存淘汰算法 FIFO/LRU/LFU/W-TinyLFU
本文浅析淘汰策略与工作中结合使用、选取,并非针对算法本身如何实现的 文章目录 FIFOLFULRUW-TinyLFU实践与优化监控与调整 FIFO first input first output , 先进先出,即最早存入的元素最先取出, 典型数据结构代表:…...
STM32的DMA技术介绍
DMA(Direct Memory Access,直接内存访问) 是一种允许外设直接与系统内存进行数据传输,而无需经过CPU的技术。在STM32微控制器中,DMA技术极大地提高了数据传输效率,降低了CPU的负担,从而提升系统…...
C++11 多线程编程-小白零基础到手撕线程池
提示:文章 文章目录 前言一、背景二、 2.1 2.2 总结 前言 前期疑问: 本文目标: 一、背景 来源于b站视频 C11 多线程编程-小白零基础到手撕线程池 学习来源:https://www.bilibili.com/video/BV1d841117SH/?p2&spm_id_f…...
智源研究院与百度达成战略合作 共建AI产研协同生态
2024年9月24日,北京智源人工智能研究院(简称“智源研究院”)与北京百度网讯科技有限公司(简称“百度”)正式签署战略合作协议,双方将充分发挥互补优势,在大模型等领域展开深度合作,共…...
Flask-SQLAlchemy:在Flask应用中优雅地操作数据库
在Python的Web开发领域,Flask是一个备受欢迎的轻量级Web框架,它以简洁、灵活而著称。而当我们需要在Flask应用中与数据库进行交互时,Flask-SQLAlchemy就成为了一个强大而便捷的工具。它将Flask的简洁性与SQLAlchemy的强大数据库抽象能力完美结…...
智能巡检机器人 数据库
智能巡检机器人AI智能识别。无需人工。只需后台监控结果即可!...
Spring AOP异步操作实现
在Spring框架中,AOP(面向切面编程)提供了一种非常灵活的方式来增强应用程序的功能。异步操作是现代应用程序中常见的需求,尤其是在处理耗时任务时,它可以帮助我们提高应用程序的响应性和吞吐量。Spring提供了一种简单的…...
【2006.07】UMLS工具——MetaMap原理深度解析
文献:《MetaMap: Mapping Text to the UMLS Metathesaurus》2006 年 7 月 14 日 https://lhncbc.nlm.nih.gov/ii/information/Papers/metamap06.pdf MetaMap:将文本映射到 UMLS 元数据库 总结 解决的问题 自动概念映射问题:解决如何将文本…...
ros2 colcon build 构建后,install中的local_setup.bash 和setup.bash有什么区别
功能概述 在 ROS2 中,colcon build是用于构建软件包的工具。构建完成后会生成install文件夹,其中的setup.bash和local_setup.bash文件都与环境设置相关,但存在一些区别。setup.bash 作用范围 setup.bash文件用于设置整个工作空间的环境变量。…...
Thymeleaf基础语法
Thymeleaf 是一种用于 Web 和非 Web 环境的现代服务器端 Java 模板引擎。它能够处理 HTML、XML、JavaScript、CSS 甚至纯文本。以下是 Thymeleaf 的一些基础语法: 1. 变量表达式 <!-- 显示变量的值 --> <p th:text"${name}">Default Name&l…...
spring cloud alibaba学习路线
以下是一条学习Spring Cloud Alibaba的路线: 一、基础前置知识 1. Java基础 熟练掌握Java语言特性,包括面向对象编程、集合框架、多线程等知识。 2. Spring和Spring Boot基础深入理解Spring框架,如依赖注入(DI)、控…...
基于 Seq2Seq 的中英文翻译项目(pytorch)
项目简介 本项目旨在使用 PyTorch 构建一个基于 Seq2Seq(编码器-解码器架构)的中英文翻译模型。我们将使用双语句子对的数据进行训练,最终实现一个能够将英文句子翻译为中文的模型。项目的主要步骤包括: 数据预处理:从数据集中提取英文和中文句子,并进行初步清洗和保存。…...
基于CircuitPython与BLE构建多探头无线温度监测系统
1. 项目概述:一个无线温度监控的“瑞士军刀” 如果你和我一样,喜欢在周末慢烤一块牛排,或者沉迷于培养天然酵母做面包,那你一定理解同时盯着好几个温度计的烦恼。厨房里烟雾缭绕,烤箱里正烤着东西,发酵箱里…...
3步解放暗黑2存档:Diablo Edit2角色编辑器完全指南
3步解放暗黑2存档:Diablo Edit2角色编辑器完全指南 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否曾因暗黑破坏神2角色build失误而懊恼?是否厌倦了数百小时刷装备却…...
Spread.NET 10-19.1 都可以提供
关于 Spread.NET提供类似 Excel 的电子表格体验。Spread.NET 可帮助您创建电子表格、网格、仪表板和窗体。它包含一个强大的计算引擎,提供 450 多个函数,并支持导入和导出 Excel 电子表格。利用丰富的 .NET 电子表格 API 和强大的计算引擎,您…...
从C代码到汇编:图解函数调用栈中rsp和rbp的“职责分工”
从C代码到汇编:图解函数调用栈中rsp和rbp的"职责分工" 在计算机程序的执行过程中,函数调用是最基础也最核心的概念之一。当我们从高级语言如C/C深入到汇编层面时,会发现函数调用的背后隐藏着一套精密的栈帧管理机制。本文将带您走进…...
Taotoken API Key的精细化管理与审计日志功能实践
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken API Key的精细化管理与审计日志功能实践 对于需要将大模型能力集成到业务流程中的团队而言,API Key的管理与安…...
手动测试射频放大器P1dB:原理、步骤与校准实战指南
1. 项目概述:为什么我们需要手动测试P1dB?在射频放大器、混频器乃至整个收发链路的设计与验证中,1dB增益压缩点(P1dB)是一个绕不开的核心指标。它直观地告诉工程师,你的器件在多大功率下开始“力不从心”—…...
工业AI相机的散热困局:为什么你的视觉检测总在夏天失效?
🎓作者简介:科技自媒体优质创作者 🌐个人主页:莱歌数字-CSDN博客 211、985硕士,从业16年 从事结构设计、热设计、售前、产品设计、项目管理等工作,涉足消费电子、新能源、医疗设备、制药信息化、核工业等…...
2026年十大最佳小程序制作平台:革新数字化运营体验
小程序制作已成为企业数字化运营的重要抓手,2026年市场涌现多个高效平台。本文聚焦十大主流工具,涵盖从开发效率到生态构建的核心维度。好赞科技凭借地域精准算法领跑,亿点通科技以低代码开发见长,启帆数字突出定制化能力。各平台…...
React基础-第一章:React 简介与开发环境搭建
📘 第一章:React 简介与开发环境搭建 1. 什么是 React? React 是一个由 Facebook(现 Meta)开发并维护的 前端 JavaScript 库,用于构建用户界面,尤其是 单页应用(SPA)。 ✅…...
Miniblink49:如何在5分钟内将浏览器内核嵌入你的C++应用?
Miniblink49:如何在5分钟内将浏览器内核嵌入你的C应用? 【免费下载链接】miniblink49 a lighter, faster browser kernel of blink to integrate HTML UI in your app. 一个小巧、轻量的浏览器内核,用来取代wke和libcef 项目地址: https://…...
