当前位置: 首页 > news >正文

数据结构-怀化学院期末题

题目:

利用希尔排序算法实现线性表的排序。希尔排序是根据给定的增量序列将线性表分隔成某个“增量”的记录组成一个子序例,在子序列中采用直接插入排序完成。

输入

第一行为元素个数n(1<=n<=1000),第二行为n个元素值(整数),即需要排序的元素个数,第三行增量序列中增量个数m,第四行为m个增量,可以假定最后一个增量为1。

输出

对每一测试用例,用m行输出各增量进行希尔排序结果,用空格隔开。

输入样例:

10
49 38 65 97 76 13 27 49 55 4
3
5 3 1

输出样例:

13 27 49 55 4 49 38 65 97 76
13 4 49 38 27 49 55 65 97 76
4 13 27 38 49 49 55 65 76 97

代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<stack>
#include<map>
using namespace std;
typedef pair<int,int> PII;
const int N = 1e5 + 10;int main(){int n;int a[N];int m;int b[N];cin >> n;for(int i = 0;i < n;i ++){cin >> a[i];}cin >> m;      for(int i = 0;i < m;i ++){cin >> b[i];}for(int i = 0;i < m;i ++){for(int j = b[i];j < n;j ++){int t = a[j];int k = j - b[i];while(k >= 0 && a[k] > t){a[k + b[i]] = a[k];k -= b[i];}a[k+b[i]] = t;}for(int j = 0 ;j < n;j ++)cout << a[j] << ' ';cout << endl;}return 0;
}

 

http://www.lryc.cn/news/274872.html

相关文章:

  • 跟cherno手搓游戏引擎【1】:配置与入口点
  • 25计算机专业考研经验贴之准备篇
  • 机器人相关知识
  • 八股文打卡day22——操作系统(5)
  • SQL Server 权限管理
  • ReentrantLock底层原理学习一
  • 数字孪生在增强现实(AR)中的应用
  • 【数据仓库与联机分析处理】多维数据模型
  • 【网络面试(3)】浏览器委托协议栈完成消息的收发
  • Kotlin: Jetpack — ViewModel简单应用
  • 【Java技术专题】「攻破技术盲区」攻破Java技术盲点之unsafe类的使用指南(打破Java的安全管控— sun.misc.unsafe)
  • 私有云平台搭建openstack和ceph结合搭建手册
  • debug mccl 02 —— 环境搭建及初步调试
  • ros python 接收GPS RTK 串口消息再转发 ros 主题消息
  • 2024年网络安全竞赛-页面信息发现任务解析
  • ARM DMA使用整理
  • 移动通信原理与关键技术学习(第四代蜂窝移动通信系统)
  • 光明源@智慧厕所技术:优化生活,提升卫生舒适度
  • 【Bootstrap学习 day13】
  • Shell:常用命令之dirname与basename
  • Linux-v4l2框架
  • VPC网络架构下的网络上数据采集
  • 模拟算法(模拟算法 == 依葫芦画瓢)万字
  • QtApplets-SystemInfo
  • vue3防抖函数封装与使用,以指令的形式使用
  • Hive学习(13)lag和lead函数取偏移量
  • Centos Unable to verify the graphical display setup
  • Java 说一下 synchronized 底层实现原理?
  • nginx访问路径匹配方法
  • 偌依 项目部署及上线步骤