希尔排序-----数据结构

看图轻松理解数据结构与算法系列(希尔排序) 前言 推出一个新系列,《看图轻松理解数据结构和算法》,主要使用图片来描述常见的数据结构和算法,轻松阅读并理解掌握。本系列包括各种堆、各种队列、各种列表、各种树、各种图、各种排序等等几十篇的样子。 希尔排序 希尔排序是希尔(Donald Shell)提出的一种排序方法,也属于插入排序,但是简单插入排序的高效版本,也称为缩小增量排序。基本思想是将待排序元素进行增量分组,然后在分组组内进行插入排序,随着... 阅读详情

希尔排序

设计思路:

        1.判断数组元素个数,若元素个数小于等于1,直接返回,无需进行排序;

        2.若元素个数大于1,进行排序值(排序值的选取直接会影响排序的时间复杂度),此次将采用希尔序列;

        3.设置gap = size/2,以后每轮轮换将gap降为原来gap的一半;

        4.进入循环,将数组元素一gap为间隔距离进行分组,并对各组中元素进行排序;

        5.待gap等于1,并且对组中元素以及排完序时,循环结束;

        6.此时的数组已经是一个有序数组。

希尔排序程序代码:

oid myshell(int array[],int64_t size){
    if(size<=1){
        //无需进行排序
        return;
    }
    //数组元素个数大于1
    //此时使用希尔排序
    int64_t gap = size/2;
    for(;gap > 0;gap/=2){
        //此处相当与插入排序中的bound = 1
        int64_t bound = gap;
        for(;bound<size;++bound){
            int bound_value = array[bound];
            int64_t cur =bound;
            for(;cur>0;cur-=gap){
                if(array[cur-gap]>bound_value){
                    array[cur] = array[cur-gap];
                }else{
                    break;
                }
            }//第三层循环结束
            array[cur] = bound_value;
        }//第二层循环结束
    }//第一层循环结束
}

测试用例程序代码:

//主函数
int main(){
    int arr[] = {1,6,3};
    int size = sizeof(arr)/sizeof(arr[0]);
    printf("排序前:");
    int i = 0;
    for(;i<size;++i){
        printf("%d ",arr[i]);
    }
    printf("\n");
    myshell(arr,size);
    printf("排序后:");
    i = 0;
    for(;i<size;++i){
        printf("%d ",arr[i]);
    }
    printf("\n");
    return 0;
}

测试结果显示:


电机系列(1) - foc最基本原理、clark变换 、park变换、附代码 什么是FOC? FOC(Field-Oriented Control),直译是磁场定向控制,也被称作矢量控制 (VC,Vector Control) ,是目前无刷直流电机(BLDC)和永磁同步电机(PMSM)高效控制的最优方法之一。FOC旨在通过精确地控制磁场大小与方向,使得电机的运动转矩平稳、噪声小、效率高,并且具有高速的动态响应。 简单来说就是,FOC是一种对无刷电机的驱动控制方法,它可以让我们对无刷电机进行 “像素级” 控制,实现很多传统电机控制方法所无法达到的效果。 因为所谓的“矢量控制”其实就是 阅读详情

相关推荐

【CSP-J/S】复赛注意事项 上机文件组织形式

每年/S 复赛都有很多同学因为一些小失误导致一年的努力付之东流。Tony老师整理了一些复赛容易踩坑的点,或许对你有帮助!

星卯教育-信奥教练tony 1万+

数据结构与算法之希尔排序

希尔排序概念 代码实现 时间复杂度

努力让自己发光,对的人才能迎着光而来 2万+

代付系统/代付系统源码/支付宝代付系统/API代付系统

简介: 其他站买的,没有做测试,源码是JAVA的,附带了安装文档,需要的拿无售后 源码下载地址https://www.skpan.cn/2QnIARSZDxG 代付系统/代付系统源码/支付宝代付系统/API代付系统 系统流程: 后台开通代理——开通商户——商户做代付(后台手工提交和 api 提交两种方式) 1、纯代付系统 2、支持个人支付宝全自动 3、支持单笔/批量/API接口方式代付 4、支持白名单、谷歌验证 5、收付款模式采用自动回调/自动转账 一、运营平台 商户管.

刀客源码网 5575

数据结构(C语言版)——希尔排序(代码版)

一、代码 #include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 #define MAXSIZE 20 typedef int Status; void shellSort(int data[],int dataArrLenght); void shellSort(int data[],int dataArrLenght); int main(int argc, char *argv[]) { in

qq_42683219的博客 2905

基于bootstrap+Java的图书管理系统(任务书)

10] 倪甜弟,周晓波,王相喜.基于JSP图书馆自习室预约系统的设计与实现[J].现代计算机, 2024, 30(9):117-120.DOI:10.3969/j.issn.1007-1423.2024.09.023.[2] 陈明雪,赵勇,周小丽,等.基于Node.js和Bootstrap的图书管理系统设计与研究[J].现代信息科技, 2021, 5(24):4.[9] 杨婷婷.基于VOSviewer的图书馆管理系统研究的可视化分析[J].现代信息科技, 2023, 7(3):123-126.

毕业作品网站 645

Fast-LIO2代码解析 古月居

FAST-LIO,FAST-LIO2与FASTER-LIO - 古月居FAST-LIO2代码解析(一) - 古月居FAST-LIO2代码解析(二) - 古月居FAST-LIO2代码解析(三) - 古月居FAST-LIO2代码解析(四) - 古月居FAST-LIO2代码解析(五) - 古月居FAST-LIO2代码解析(六) - 古月居

li4692625的博客 2784

[ 数据结构 -- 手撕排序算法第三篇 ] 希尔排序

手撕排序算法系列之:希尔排序。 从本篇文章开始,我会介绍并分析常见的几种排序,大致包括插入排序,冒泡排序,希尔排序,选择排序,堆排序,快速排序,归并排序等。 大家可以点击此链接阅读其他排序算法:排序算法_大合集(data-structure_Sort) 本篇主要来手撕希尔排序~~ 目录 1.常见的排序算法 1.1 插入排序基本思想 2.希尔排序 2.1希尔排序(缩小增量排序) 2.1.1预排序阶段 2.1.2插入排序阶段 2.2单趟希尔排序 2.2.1思路分析 3.希尔排...

优快云博客 5552

医学图像处理实战:3D Slicer从安装到病灶分析全流程指南

本文提供了一份详尽的3D Slicer实战指南,涵盖从软件安装、DICOM数据导入到图像增强、病灶分割及三维可视化的全流程。重点演示了如何利用阈值分割、区域生长等核心图像处理技术进行病灶分析,并生成定量报告,是医学影像分析初学者的实用入门教程。

weixin_29278805的博客 600

希尔排序图文详解+代码实现

希尔排序也是一种插入排序,它是直接插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。 性质:1、时间复杂度:O(nlogn) 2、空间复杂度:O(1) 下面先介绍一下直接插入排序,理解了直接插入排序,希尔排序就很好理解了,实现代码也是由直接插入排序的代码改进得到。 1、直接插入排序 1.1、算法步骤 首先将第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。 依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(每次插入后有序序列长度+1,未排序序列长度-1) 1.

qq_44371305的博客 2922

基于STM32F103的智能门禁门锁门卫系统设计

本文设计了一种基于STM32F103单片机的智能门禁系统,集成了密码、射频IC卡和指纹识别三种验证方式。系统采用模块化设计,包含MFRC522射频模块、AS608指纹模块、矩阵键盘、OLED显示和舵机控制等硬件,实现了身份验证、密码修改、IC卡/指纹管理以及安全防护功能。测试结果表明系统响应迅速(密码验证250ms、指纹验证600ms)、功耗低(待机50mA),且具备掉电密码保存功能。该系统操作简便、功能完善,适用于家庭和办公场所,具有较高实用价值。未来可扩展远程控制、人脸识别等功能以进一步提升智能化水平。

3254968421的博客 318

YOLOv11改进策略【Head/分割头】| 结合CVPR-2024 中的DynamicConv 动态卷积 改进分割头, 优化模型(独家改进)

在大规模视觉预训练中,通常模型的性能受到数据、参数和FLOP三个关键因素的影响。一般来说,模型的参数数量越多,FLOP也越高,但在移动设备等对计算资源有限制的场景下,需要低FLOP的模型同时又希望模型能从大规模预训练中受益。传统的方法很难在增加参数的同时保持低FLOP,因此需要一种新的设计来解决这个问题,模块应运而生。

Limiiiing的博客 2310

【数据结构】——希尔排序

一、算法思想 希尔排序采用跳跃式分组(逻辑上分组)的策略,通过某个增量将数组元素划分为若干组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 平均时间复杂度:O(nlogn) 空间复杂度:O(1) 稳定性:不稳定 下面举例图解: 将图中的15个数字划分为5组,每组3个数字,然后进行排序。组内排序时是将每组...

Dr_Cassie的博客 664

【YOLO26实战全攻略】19——智慧交通(一):高速抛洒物与事故检测全流程落地

在智慧交通领域,高速公路抛洒物、交通事故等突发状况常导致二次事故与大规模拥堵,传统人工监控存在响应滞后、覆盖有限等痛点。本文基于Ultralytics YOLO26算法,结合ByteTrack多目标跟踪技术,构建从数据准备、模型训练到边缘部署的全栈式智慧交通检测系统。核心内容包括:多车型专属数据集构建、抛洒物检测模型优化、ByteTrack轨迹跟踪集成、异常事件(违停/逆行/碰撞)识别逻辑实现,以及NVIDIA Jetson边缘设备部署方案。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1491

数据结构之希尔排序

希尔排序实际上就是将一组数据进行分组排序(等距元素为一组进行排序),在每一组内进行直接插入排序,让后每一次减少间距,进行排序,到距离为1结束。希尔排序也可以认为直接插入排序的优化版,优化肯定要从直接插入排序的优点来想(1)在待排序序列基本有序时,直接插入排序效率会大大提高。(2)在待排元素数量较小时,直接插入排序效率也会大大提高。希尔排序就是把这两个优点给放大、利用起来。...

&volume的博客 1081

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JAVA数据结构与算法之————希尔排序

JAVA数据结构与算法之————希尔排序 个人理解:希尔排序其实是增量不为1的冒泡排序。 代码: import java.util.Arrays; /* * 希尔排序算法的时间复杂度为O(n^1.5), 空间复杂度为O(1) * */ public class ShellSort<E extends Comparable> { private Swap<E> s ...

qq_36007633的博客 594

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python算法与数据结构——希尔排序

希尔排序是一种分组插入排序算法。

weixin_74165584的博客 1502

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

数据结构代码——希尔排序

数据结构代码——希尔排序

qq_53250579的博客 368

(数据结构)希尔排序算法

(数据结构)希尔排序算法

GHY 378

数据结构-排序-希尔排序

数据结构-排序-希尔排序

qq_40731414的博客 731

【数据结构】排序——希尔排序

前言本篇博客,我们继续介绍一种排序——希尔排序,上篇博客我们说了插入排序,了解了插入排序,那希尔排序又是什么那,我们一起来看看若有问题 评论区见📝。

m0_74091744的博客 793

数据结构—排序之希尔排序

void Shellsort(SqList &L,int dt[],int t)//增量数组。cout

gegegegegegedei_的博客 230

【数据结构】希尔排序

文章摘要:希尔排序是直接插入排序的优化版本,通过分组插入和增量序列策略提升效率。核心思想是:先以较大增量分组排序,再逐步缩小增量直至1,完成最终排序。其时间复杂度约为O(n^1.5),空间复杂度为O(1),但稳定性较差。希尔排序适用于中等规模数据、嵌入式系统等场景,优点是实现简单、内存占用少;缺点是时间复杂度分析复杂、增量序列选择困难。相比快速排序和归并排序,希尔排序在特定场景下更具优势。

大雨淅淅的博客 820

数据结构,希尔排序

【代码】数据结构,希尔排序。

wqs12_的博客 142

数据结构——希尔排序(详解)

数据结构算法——希尔排序

Yui_的博客 1万+

【数据结构22】希尔排序

1. 希尔排序介绍 2. 希尔排序思路 3. 代码实现 3.1 交换法 希尔排序推导过程: public class ShellSort { public static void main(String[] args) { int[] arr = {8,9,1,7,2,3,5,4,6,0}; System.out.println("排序前:"+Arr...

你今天真好看呀 511
上一篇: 选择排序-----数据结构
下一篇: 插入排序-----数据结构
CYD、孤狼
博客等级 码龄9年 24粉丝 129原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值