【算法】- 排序 -希尔排序

文章目录

  • 前言
  • 一、希尔排序思想
  • 二、希尔排序
  • 总结


前言

编程语言:C++
编译器:vs2022


一、希尔排序思想

插入排序适合用在数列已经基本有序了,当我们在处理一些大规模无序的数值时,插入排序就显得比较拉跨,所以我们可以,先将序列变成基本有序,最终再利用插入排序进行排序这样是不是会更好。所以也就有了希尔排序这个算法,希尔排序通过创建增量来实现对序列的跳跃式交换,再通过一定比例减少增量再次跳跃式交换最终当增量为1时就是插入排序。这样也就实现了希尔排序

二、希尔排序

#define MAXSIZE 10
#include <iostream>
using namespace std;//希尔排序
int main()
{int i, j,h;int arr[MAXSIZE + 1] = { 0,6,4,2,8,9,5,11,10,3,7 };//创建数组数据arr[0]为哨兵h = MAXSIZE;//将要排序的长度给增量hdo{h = h / 3 + 1;for (i = h+1; i <= MAXSIZE; i++){if (arr[i - h] > arr[i])//比较是否需要发生移动{arr[0] = arr[i];//将要插入的值赋值给哨兵for (j = i - h; j > 0 && arr[j] >= arr[0]; j -= h)arr[j + h] = arr[j];//向后移动arr[j + h] = arr[0];//插入正确位置}}} while (h > 1);for (i = 1; i <= MAXSIZE; i++)cout << arr[i] << " ";system("pause");return 0;
}

总结

希尔排序是插入排序的一种改进,使得希尔排序能够再大规模无序的条件下也能够充分发挥作用。希尔排序时间复杂度:O(nlogn)~O(n2)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1559193.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

重头开始嵌入式第四十七天(硬件 ARM裸机开发 RS232 RS4885 IIC)

目录 一.什么是RS232&#xff1f; 1. 历史背景&#xff1a; 2. 电气特性&#xff1a; 3. 连接器类型&#xff1a; 4. 通信特点&#xff1a; 5. 应用场景&#xff1a; 二.什么是RS485&#xff1f; 1. 电气特性&#xff1a; 2. 通信模式&#xff1a; 3. 传输距离与速率&…

扫描电镜是用来测什么的?

扫描电镜是一种用于对样品进行微观尺度形貌观测和分析的仪器。它能够提供高分辨率的图像&#xff0c;帮助科学家和工程师了解样品的微观结构和特性。 一、扫描电镜的一般测量功能 微观形貌观测 扫描电镜可以清晰地观察到样品表面的微观形貌&#xff0c;如颗粒的形状、大小、…

GC9113:电子锁领域的革新力量

在现代社会&#xff0c;安全与便捷成为人们对生活品质的重要追求。电子锁作为保障家庭和商业安全的关键设备&#xff0c;不断经历着技术的革新与升级。而 GC9113 的出现&#xff0c;为电子锁领域带来了全新的替代选择。 GC9113 以其卓越的性能和独特的优势&#xff0c;在电子锁…

【嵌入式软件-STM32】STM32简介

目录 一、STM32定义 二、STM32用途 三、STM32特点 四、STM32 四个系列 五、了解ARM 六、芯片解释 七、片上资源 八、命名规则 九、系统结构 内核 Flash DMA 外设种类和分布 十、引脚定义 类型 名称 引脚 十一、启动配置 十二、STM32最小系统电路 STM32及供电 供电引脚 滤波电容…

深度学习:循环神经网络RNN

目录 一、神经网络的历程 1.传统神经网络存在的问题 2.提出一种新的神经网络 二、RNN基本结构 1.RNN基本结构 2.RNN的独特结构 3.RNN的局限性 一、神经网络的历程 1.传统神经网络存在的问题 无法训练出具有顺序的数据。模型搭建时没有考虑数据上下之间的关系。因为传统…

十年网络安全工程师谈学习网络安全的正确顺序

当今数字化时代&#xff0c;网络安全行业如守护数字世界的坚固堡垒&#xff0c;其重要性愈发凸显。随着信息技术的迅猛发展&#xff0c;我们的生活、工作、社交等方方面面都与网络紧密相连&#xff0c;从个人隐私信息到企业核心数据&#xff0c;再到国家关键基础设施乃至全球互…

什么是Cookie 它有什么作用 及如何使用Session-Cookie方案进行身份验证 总结

Cookie 和 Session 都是用来跟踪浏览器用户身份的会话方式&#xff0c;但是两者的应用场景不太一样。 维基百科是这样定义 Cookie 的&#xff1a; Cookies 是某些网站为了辨别用户身份而储存在用户本地终端上的数据&#xff08;通常经过加密&#xff09;。 简单来说&#xff1…

实战千问2大模型第五天——VLLM 运行 Qwen2-VL-7B(多模态)

一、简介 VLLM 是一种高效的深度学习推理库&#xff0c;通过PagedAttention算法有效管理大语言模型的注意力内存&#xff0c;其特点包括24倍的吞吐提升和3.5倍的TGI性能&#xff0c;无需修改模型结构&#xff0c;专门设计用于加速大规模语言模型&#xff08;LLM&#xff09;的…

网站排名,让网站快速有排名的几个方法

要让网站快速获得并提升排名&#xff0c;需要综合运用一系列专业策略和技术&#xff0c;这些策略涵盖了内容优化、技术调整、外链建设、用户体验提升等多个方面。以下是让网站快速有排名的几个方法&#xff1a; 1.内容为王&#xff1a;创造高质量、有价值的内容 -深入…

The Android SDK location cannot be at the filesystem root

win11&#xff0c; 安装启动完Android Studio后&#xff0c;一直显示 The Android SDK location cannot be at the filesystem root因此需要下载SDK包&#xff0c;必须开启代理。 开启代理后&#xff0c;在System下开启自动检测代理&#xff0c;如图 重启Android Studio&a…

Ubuntu双卡训练过程中电脑总是突然重启【解决方法】

本来以为是温度过热造成的&#xff0c;发现不是&#xff0c;因为在重启的瞬间&#xff0c;gpu温度并没有特别高。 参见视频如下&#xff1a; 双卡训练过程中gpu温度监测 然后尝试了另一种方法&#xff1a; 限制gpu显卡的功率 具体操作如下&#xff1a; 先检查当前gpu功率限…

[论文阅读] DVQA: Understanding Data Visualizations via Question Answering

原文链接&#xff1a;http://arxiv.org/abs/1801.08163 启发&#xff1a;没太读懂这篇论文&#xff0c;暂时能理解的就是本文提出了一个专门针对条形图问答的数据集DVQA以及一个端到端模型SANDY&#xff0c;模型有两个版本&#xff0c;Oracle和OCR。主要解决的问题是固定词表无…

IPguard vs Ping32:防泄密软件的巅峰对决,哪款是你的理想选择

在当今这个数字化时代&#xff0c;数据安全已成为企业不可忽视的重要议题。为了有效防范数据泄露风险&#xff0c;众多企业开始寻求专业的防泄密软件。IPguard与Ping32作为两款备受关注的防泄密软件&#xff0c;各自以其卓越的性能和独特的功能&#xff0c;赢得了广大用户的青睐…

线程(五)线程的同步和互斥——线程信号量

文章目录 线程线程的同步和互斥线程的同步和互斥--线程信号量示例--使用线程信号量来控制线程执行的先后顺序示例--使用信号量实现线程之间的互斥示例--使用信号量实现线程之间的同步 死锁线程状态转换 线程 线程的同步和互斥 线程的同步和互斥–线程信号量 上边讲了互斥的方…

力扣HOT100合集

力扣HOT100 - 1. 两数之和 解题思路&#xff1a; 解法一&#xff1a;暴力 class Solution {public int[] twoSum(int[] nums, int target) {int n nums.length;for (int i 0; i < n; i)for (int j i 1; j < n; j) {if (target nums[i] nums[j])return new int[] …

操作系统-系统调用

应用程序调用printf(),会触发系统调用write() 1、概念 操作系统服务的编程接口&#xff0c;通常由高级语言编写&#xff08;C/C&#xff09;&#xff0c;程序访问通常是通过高层次的API接口而不是直接进行系统调用。 2、三种最常用的应用程序编程接口&#xff08;API&#xf…

Vue深入了解

Vue深入了解 MVVMv-model (双向数据绑定原理)异步更新keep-alive原理$nextTick原理computed 和 watch 的区别css-scoped虚拟DOMVuex && PiniaVue-router原理proxy 与 Object.defineProperty组件通信方式 MVVM <!DOCTYPE html> <html lang"en">&…

AD原理图编译出现Net XX has no driving source

提示无驱动电压源&#xff0c;这是因为你的芯片管脚设置了电气属性造成的。 两种解决AD中出现Net has no driving source警告的方法。 方法一&#xff1a;取消电气属性检测&#xff0c;但不推荐&#xff1b; 打开原理图编译项&#xff0c;将NET no driving source 修改为no …

PostgreSQL的学习心得和知识总结(一百五十三)|[performance]将 OR 子句转换为 ANY 表达式

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

树控件QTreeWidget

树控件跟表格控件类似&#xff0c;也可以有多列&#xff0c;也可以只有1列&#xff0c;可以有多行&#xff0c;只不过每一行都是一个QTreeWidgetItem&#xff0c;每一行都是一个可以展开的树 常用属性和方法 显示和隐藏标题栏 树控件只有水平标题栏 //获取和设置标题栏的显…