DS排序--希尔排序

2023-11-09

目录

题目描述

思路分析

AC代码


题目描述

给出一个数据序列,使用希尔排序算法进行降序排序。

间隔gap使用序列长度循环除2直到1

输入

第一行输入t,表示有t个测试示例
第二行输入n,表示第一个示例有n个数据(n>1)
第三行输入n个数据,都是正整数,数据之间用空格隔开
以此类推

输出

对每组测试数据,输出每趟排序结果。不同组测试数据间用空行分隔。

输入样例1 

2
6
111 22 6 444 333 55
8
77 555 33 1 444 77 666 2222

输出样例1

444 333 55 111 22 6
444 333 111 55 22 6

444 555 666 2222 77 77 33 1
666 2222 444 555 77 77 33 1
2222 666 555 444 77 77 33 1

思路分析

直接插入排序时间复杂度为O(n²),如果待排序的序列已经有序,则时间复杂度提高到O(n)。

希尔排序的基本思想是:先将整个待排序列分割成若干子序列分别进行直接插入排序,将序列变成基本有序序列后,再进行对整体进行一次直接插入排序,又称为缩小增量排序。

AC代码

#include<iostream>
using namespace std;
int main() {
    int n, t;
    cin >> t;
    while (t--) {
        cin >> n;
        int a[n];
        for (int i = 0; i < n; i++)
            cin >> a[i];
        for(int interval=n/2;interval>=1;interval/=2){
            for (int i = 0; i < n - interval; i++) {
                for (int j = i + interval; j >=interval; j-=interval)
                    if (a[j] < a[j - interval])
                        break;
                    else
                        swap(a[j], a[j - interval]);
            }
            for (int k = 0; k < n - 1; k++)
                cout << a[k] << ' ';
            cout << a[n - 1] << endl;
        }
        cout<<endl;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DS排序--希尔排序 的相关文章

随机推荐

  • 网络的基本概念

    网络 网络是由若干节点和连接这些结点的链路组成 网络中的节点可以是计算机 交换机 路由器等设备 网络设备有 交换机 路由器 集线器 传输介质有 双绞线 同轴电缆 光纤 简单的网络示意图 互联网 把多个网络连接起来就构成了互联网 目前最大的互
  • 朴素贝叶斯分类

    先上问题吧 我们统计了14天的气象数据 指标包括outlook temperature humidity windy 并已知这些天气是否打球 play 如果给出新一天的气象指标数据 sunny cool high TRUE 判断一下会不会去
  • 解决 Fedora 下部分网页不能正常打开的问题(Linux 通用)

    使用命令 ifconfig 可以查看本地的网卡信息 ifconfig a 一般以wlp开头的为无线网卡 用 ifconfig XXXX 网卡名可以单独查看某一个网卡的信息 如下所示 wlp0s20f3 flags 4163
  • 异常的笔记

    异常 很重要 有利于我们平时处理问题 异常就是代表程序出现了问题 常见的异常比如说 数组越界 除法除0 异常的体系是什么 java lang Throwable Error Exception RuntimeException 其他异常 E
  • UE4 Niagara粒子系统基础笔记

    目录 Niagara基础概念 Niagara官方建议 Niagara堆栈面板 Niagara渲染模式 材质 Niagara和蓝图 Niagara常用模块 Niagara常用技巧 Niagara ModuleScript Niagara基础概
  • RTP和RTCP详解

    1 RTP和RTCP详解 文章目录 1 RTP和RTCP详解 1 1 概述 1 2 RTP协议详解 1 3 RTCP协议详解 1 1 概述 在流媒体相关的领域 我们进场会看到RTP RTCP 其用于流式传输的最常见的码流传输协议 位于传输层
  • Python单元测试:pytest

    pytest默认使用的是main system packages 如果需要在虚拟环境中运行 需要运行 python m pytest test py 如果需要打印中间结果 pytest test py s
  • 跨时钟域电路设计——多bit信号&FIFO

    多个bit信号的跨时钟域仅仅通过简单的同步器同步时不安全的 如下图 虽然信号都同步到目的时钟域 可完成的功能却与设计的初衷不相符 解决方案之一为对信号进行格雷码编码 但此方案只适用于连续变化的信号 另一种方案为增加新的控制信号en 确保传输
  • 机器学习和深度学习引用量最高的20篇论文(2014-2017)

    机器学习和深度学习的研究进展正深刻变革着人类的技术 本文列出了自 2014 年以来这两个领域发表的最重要 被引用次数最多 的 20 篇科学论文 以飨读者 机器学习 尤其是其子领域深度学习 在近些年来取得了许多惊人的进展 重要的研究论文可能带
  • 1200兆路由器网速_家庭网络配置问题案例:六类网线上网速度只有100兆

    有这样一个案例 家中布置了一根6类网线 8芯中间带个塑料十字的双绞线 网线约10米长 全部为埋地管道暗线 水晶头为568B线序 电脑插也为6类 西门子 568B线序接法 现在出现一个问题 就是网线一个连接移动光猫 为路由器模式 千兆口 然后
  • mac-右键-用VSCode打开

    1 点击访达 搜索自动操作 2 选择快速操作 3 执行shell脚本 替换代码如下 for f in do open a Visual Studio Code f done command s保存会出现一个弹框 保存为 用VSCode打开
  • IDEA2021.2创建java web项目(很详细,手把手创建)

    该文章适合人群 初学java web 不用maven或者gradle创建java web项目 忘记了怎么创建web项目 错误示范 上来直接创建java ee 项目 这样创建出来的项目有Maven或者Gradle包管理 正确演示 1 创建项目
  • “威胁”员工全来上班后,马斯克“尴尬”了:车没地停、工位不够坐、Wi-Fi 还太差

    点击蓝色 程序员黄小斜 关注我哟 加个 星标 每天和你一起多进步一点点 整理 郑丽媛 出品 程序人生 ID coder life 每一个特斯拉员工每周都要在办公室工作 40 个小时 如果你不来 那么我们就认为你辞职了 在马斯克 蛮横 地放出
  • python机器学习——NLTK及分析文本数据(自然语言处理基础)

    NLTK NLTK Natural Language Toolkit 自然语言处理工具包 在NLP 自然语言处理 领域中 最常使用的一个Python库 自带语料库 词性分类库 自带分类 分词功能 NLTK安装 安装 pip install
  • OpenCart 常见错误解决

    1 GC 报错 错误内容 opencart SessionHandler gc ps files cleanup dir opendir var lib php5 failed Permission denied 解决方法 更改 php i
  • 【论文记录】Boosting Detection in Crowd Analysis via Underutilized Output Features

    Boosting Detection in Crowd Analysis via Underutilized Output Features Abstract Crowd Hat使用一种混合的2D 1D压缩技术进行细化空间特征与获取特定人群
  • k8s删除pod镜像没响应marking for deletion pod TaintManagerEviction

    使用命令强制删除 Pod的状态为 Marking for deletion 表示该Pod正在被标记为待删除状态 但实际上并没有被删除 这可能是因为以下原因之一 删除操作被阻塞 可能是由于某些资源或容器正在使用该Pod 导致删除操作被阻塞 您
  • Python报错:module 'scipy' has no attribute 'xxx'

    首先看使用的函数在不在这几个当中 以 interpolate 为例 scipy 将 interpolate 单独定义为一个小子库 所以调用的时候不能单独写 import scipy 而是要写成 import scipy interpolat
  • 路由器打印机服务器系统,路由器怎么设置打印机服务器

    路由器怎么设置打印机服务器 内容精选 换一换 CDC Change Data Capture 即数据变更抓取 通过为源端数据源开启CDC ROMA Connect可实现数据源的实时数据同步以及数据表的物理删除同步 ROMA Connect支
  • DS排序--希尔排序

    目录 题目描述 思路分析 AC代码 题目描述 给出一个数据序列 使用希尔排序算法进行降序排序 间隔gap使用序列长度循环除2直到1 输入 第一行输入t 表示有t个测试示例 第二行输入n 表示第一个示例有n个数据 n gt 1 第三行输入n个