第八章 排序 三、希尔排序

news2025/1/12 23:15:20

目录

 一、算法思想

二、例子

三、代码实现

五、验证

六、空间复杂度

七、时间复杂度

八、稳定性


 一、算法思想

先追求表中元素部分有序,在逐渐逼近表中元素全部有序。

二、例子

1、我们要升序排列此表

2、取一个差值作为子表的划分的条件,希尔本人建议d=n/2,在本例题中表示为d=8/2=4

于是,我们将相距为4的元素分配到一个子表。

3、分别对它们进行插入排序

4、将d除以2,得到新的间距,并得到新的子表

5、再次进行插入排序

6、再次缩小d的值,此时d为1,将整个表整合,并进行插入排序,得到最后结果

三、代码实现

#include "bits/stdc++.h"
using namespace std;

void ShellSort(int a[],int n){
    int d,i,j,temp;
    for (d = n/2; d >= 1; d=d/2) {//每次的步长不一样
        for (i = d; i <=n ; ++i) {//从第一个d开始
            if (a[i]<a[i-d]){//如果此数小于它前面的数
                temp=a[i];//将此数存入缓存变量
                for (j = i-d; j >=0 && temp<a[j] ; j-=d) {//设初始值为当前值的前d个值
                    a[j+d] = a[j];//用它们作比较,若比它大则将数前移d位
                }
                a[j+d] = temp;//最后把数插入比它的的最后一个数后面
            }
        }
    }
}

int main(){
    int count,arr[10];
    scanf("%d",&count);//输入数组长度
    for (int i = 0; i < count; ++i) {
        scanf("%d",&arr[i]);//输入数组
    }
    ShellSort(arr,count);//调用排序函数
    for (int i = 0; i < count; ++i) {
        printf("%d ",arr[i]);//输出数组
    }
    return 0;
}

五、验证

六、空间复杂度

O(1);

七、时间复杂度

八、稳定性

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

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

相关文章

SSM - Springboot - MyBatis-Plus 全栈体系(十九)

第四章 SpringMVC 二、SpringMVC 接收数据 1. 访问路径设置 RequestMapping 注解的作用就是将请求的 URL 地址和处理请求的方式&#xff08;handler 方法&#xff09;关联起来&#xff0c;建立映射关系。SpringMVC 接收到指定的请求&#xff0c;就会来找到在映射关系中对应的…

CTFHUB - SSRF

目录 SSRF漏洞 攻击对象 攻击形式 产生漏洞的函数 file_get_contents() fsockopen() curl_exec() 提高危害 利用的伪协议 file dict gopher 内网访问 伪协议读取文件 端口扫描 POST请求 总结 上传文件 总结 FastCGI协议 CGI和FastCGI的区别 FastCGI协议 …

盒子阴影和网页布局

盒子阴影 box-shadow: 10px 10px 10px 4px rgba(0,0,0,.3);//最后一个是透明度 传统网页布局的三种方式 标准流 就是按照规定好的默认方式排列 1.块级元素&#xff1a;div、hr、p、h1~h2、ul、ol、dl、form、table 行内元素会按照书顺序&#xff0c;从左到右顺序排列&#…

1.2 数据模型

思维导图&#xff1a; 前言&#xff1a; **1.2.1 什么是模型** - **定义**&#xff1a;模型是对现实世界中某个对象特征的模拟和抽象。例如&#xff0c;一张地图、建筑设计沙盘或精致的航模飞机都可以视为具体的模型。 - **具体模型与现实生活**&#xff1a;具体模型可以很容…

剑指offer——JZ55 二叉树的深度 解题思路与具体代码【C++】

一、题目描述与要求 二叉树的深度_牛客题霸_牛客网 (nowcoder.com) 题目描述 输入一棵二叉树&#xff0c;求该树的深度。从根结点到叶结点依次经过的结点&#xff08;含根、叶结点&#xff09;形成树的一条路径&#xff0c;最长路径的长度为树的深度&#xff0c;根节点的深度…

【简单了解一下红黑树】

文章目录 红黑树1.简介2.为什么需要红黑树&#xff1f;3.性质4. 红黑树的效率4.1 红黑树效率4.2 红黑树和AVL树的比较 5.AVL树 vs 红黑树5.1 AVL树5.2 红黑树5.3 如何选择 红黑树 1.简介 红黑树是一种自平衡的二叉查找树&#xff0c;是一种高效的查找树。它是由 Rudolf Bayer …

微信公众号开发与本地调试详细教程

在进行微信公众号开发时&#xff0c;本地调试是一个关键的步骤。本文将详细介绍如何进行微信公众号开发并在本地环境中进行调试。我们将以Nginx为例&#xff0c;演示如何配置虚拟主机&#xff0c;使用ngrok进行内网穿透&#xff0c;以及进行网页授权和JS SDK的测试。 1. 准备工…

Compose Canvas基础

Compose Canvas基础 前言Canvas是什么drawxxx()绘制方法drawCircle 画圆不填充颜色设置线条的宽度 drawRect 画矩形drawPoints 画点pointMode drawOval 画椭圆drawLine 画线drawRoundRect 画圆角矩形drawArc 绘制弧形或扇形useCenter drawPath 画自定义图形 总结 前言 阅读本文…

【C++ 学习 ㉕】- 万字详解 unordered_map 和 unordered_set(哈希表的查找和容器的模拟实现)

目录 一、unordered_map 的基本介绍 二、unordered_set 的基本介绍 三、相关练习 3.1 - 在长度 2N 的数组中找出重复 N 次的元素 3.2 - 存在重复元素 3.3 - 两句话中的不常见单词 四、哈希表的查找 4.1 - 哈希表的基本概念 4.2 - 哈希函数的构造方法 4.3 - 处理冲突的…

用go获取IPv4地址,WLAN的IPv4地址,本机公网IP地址详解

文章目录 获取IPv4地址获取WLAN的IPv4地址获取本机公网IP地址 获取IPv4地址 下面的代码会打印出本机所有的IPv4地址。这个方法可能会返回多个IP地址&#xff0c;因为一台机器可能有多个网络接口&#xff0c;每个接口可能有一个或多个IP地址。 package mainimport ("fmt&…

阿里云服务器地域和可用区查询表_地域可用区大全

阿里云服务器地域和可用区有哪些&#xff1f;阿里云服务器地域节点遍布全球29个地域、88个可用区&#xff0c;包括中国大陆、中国香港、日本、美国、新加坡、孟买、泰国、首尔、迪拜等地域&#xff0c;同一个地域下有多个可用区可以选择&#xff0c;阿里云服务器网分享2023新版…

批量剪辑技巧:视频去色处理,让色彩焕然一新!

你是否曾经遇到过这样的问题&#xff1a;大量视频需要处理&#xff0c;但色彩总是达不到你的要求&#xff1f;现在&#xff0c;我们将向你展示如何通过批量剪辑技巧&#xff0c;轻松去除视频原色&#xff0c;让色彩焕然一新&#xff01; 首先&#xff0c;我们要进入【视频剪辑…

##***

本文涵盖了一种名为"快速编写论文&#xff0c;课设辅助器"的智能人工智能&#xff08;AI&#xff09;系统。该系统旨在提供高效的论文和课程设计撰写辅助功能。通过利用先进的自然语言处理和机器学习算法&#xff0c;该系统能够自动生成与特定主题相关的内容&#xf…

苹果mac电脑securecrt下载 附securecrt破解文件

SecureCRT for Mac是一款由VanDyke Software公司开发的终端仿真软件&#xff0c;专为Mac OS X系统设计&#xff0c;用于提供安全SSH、Telnet和其他协议的远程访问和管理。它适用于各种操作系统和设备&#xff0c;如Windows、Linux和UNIX等&#xff0c;为Mac用户提供了广泛的连接…

嵌入式学习笔记(46) NandFlash的结构

9.2.1 Nand的单元组织&#xff1a;block与page&#xff08;大页Nand与小页Nand&#xff09; (1)Nand的页和以前讲过的块设备&#xff08;尤其是硬盘&#xff09;的扇区是类似的。扇区最早在磁盘中是512字节&#xff0c;后来也有些高级硬盘扇区不是512字节&#xff0c;而是1024…

高中生自学Python,这里给大家一些建议

高一学业压力比较重&#xff0c;如果你还是选择自学Python&#xff0c;每天可以抽出一两个小时来学习的话&#xff0c;也是可以的。下面是我给你的5点建议&#xff1a; 找浅显易懂&#xff0c;例子比较好的教程&#xff0c;从头到尾看下去。不要看很多本&#xff0c;专注于一本…

C/C++:[Error] ld returned 1 exit status 解决方案

好久没用了&#xff0c;今天写了会儿代码&#xff0c;各种BUg,emmmmmm 出现了很多次以下这个问题&#xff1a;[Error] ld returned 1 exit status 可能问题&解决方式&#xff1a; 常见的语法/单词拼写错误&#xff1a;常见的Main,printf,scanf等拼写错误 函数名或者声明有…

行与走,放慢自己,思考回顾。

为什么要出去行与走&#xff1f; 1、出去行与走看到祖国的大美风景&#xff0c;可以更深刻的认识到我们祖国的美好。 2、可以放空心情&#xff0c;排除掉积攒在写字楼内的方格子里面的郁闷和烦恼。 3、可以为自己的身体和心灵找一个安静和清澈净土。 4、在行和走之间&#…

GB28181学习(六)——实时视音频点播(数据传输部分)

GB28181系列文章&#xff1a; 总述&#xff1a;https://blog.csdn.net/www_dong/article/details/132515446 注册与注销&#xff1a;https://blog.csdn.net/www_dong/article/details/132654525 心跳保活&#xff1a;https://blog.csdn.net/www_dong/article/details/132796…

SpringCloud-Bus

接上文 SpringCloud-消息组件 1 注册Bus Bus需要基于一个具体的消息队列实现&#xff0c;比如RabbitMQ.还使用最开始的服务拆分项目&#xff0c;比如现在借阅服务的某个接口调用时&#xff0c;能给用户服务和图书服务发送一个通知。 首先父项目导入SpringCloud依赖 <depend…