Description

我们已经学习了各种排序方法,知道在不同的情况下要选择不同的排序算法,以期达到最好的排序效率;对于待排序数据来说,若数据基本有序且记录较少时, 直接插入排序的效率是非常好的,希尔排序就是针对一组基本有序的少量数据记录进行排序的高效算法。你的任务是对于给定的数据进行希尔排序,其中增量dk=n/(2^k)(k=1,2,3……)
Input

连续输入多组数据,每组输入数据的第一行给出一个正整数N(N <= 10000),随后连续给出N个整数表示待排序关键字,数字间以空格分隔。

Output

输出dk=n/2和dk=1时的结果。
Sample
Input

10
10 9 8 7 6 5 4 3 2 1
10
-5 9 7 -11 37 -22 99 288 33 66

Output

5 4 3 2 1 10 9 8 7 6
1 2 3 4 5 6 7 8 9 10
-22 9 7 -11 37 -5 99 288 33 66
-22 -11 -5 7 9 33 37 66 99 288

Hint
希尔排序图解

#include<bits/stdc++.h>using namespace std;const int N = 1e4 + 10;int a[N];void Shellsort(int k, int n)
{for(int i = k; i < n; i++){if(a[i] < a[i - k]){int t = a[i];int j;for(j = i - k; j >= 0 && a[j] > t; j -= k){a[j + k] = a[j];}a[j + k] = t;}}
}int main()
{int n;while(cin >> n){for(int i = 0; i < n; i++)cin >> a[i];Shellsort(n / 2, n);for(int i = 0; i < n; i++){if(i == n - 1)cout << a[i] << endl;elsecout << a[i] << " ";}Shellsort(1, n);for(int i = 0; i < n; i++){if(i == n - 1)cout << a[i] << endl;elsecout << a[i] << " ";}}return 0;
}

F - 数据结构实验之排序六:希尔排序相关推荐

  1. F - 数据结构实验之查找六:顺序查找

    Description 在一个给定的无序序列里,查找与给定关键字相同的元素,若存在则输出找到的元素在序列中的位序和需要进行的比较次数,不存在则输出"No",序列位序从1到n,要求查 ...

  2. SDUT_2121数据结构实验之链表六:有序链表的建立 (对建立的单项链表结构进行排序)

    点击打开链接 数据结构实验之链表六:有序链表的建立 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem ...

  3. 数据结构 排序(希尔排序)

    //希尔排序法--插入排序升级版 #include<stdio.h> #include<stdlib.h> #include<string.h> #include& ...

  4. 数据结构:从插入排序到希尔排序

    数据结构:从插入排序到希尔排序 插入排序 算法思路 每次从无序表中取出第一个元素,将其插入到有序表中的适当位置,使有序表的长度不断加长,完成排序过程. n个待排序的元素由一个有序表和一个无序表组成,开 ...

  5. 希尔排序算法python_python算法(六)希尔排序

    python算法(六)希尔排序 希称排序 问题: 将一组乱序的数列,按从小到大(从大到小)的顺序重新排列. 方法: 设定一个初始增量, 对原始数列进行分组: 对每一个分组进行排序 设置一个更小的增量 ...

  6. 【数据结构与算法】高级排序(希尔排序、归并排序、快速排序)完整思路,并用代码封装排序函数

    本系列文章[数据结构与算法]所有完整代码已上传 github,想要完整代码的小伙伴可以直接去那获取,可以的话欢迎点个Star哦~下面放上跳转链接 https://github.com/Lpyexplo ...

  7. 经典排序算法 - 希尔排序Shell sort

    经典排序算法 - 希尔排序Shell sort 希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分, 第一部分,希尔排序介绍 第二部分,如何选取关键字,选取关键字是希尔排序的关键 第 ...

  8. 冒泡排序、插入排序、选择排序、希尔排序、堆排序、归并排序等常用排序算法的比较

    掌握好常用的排序算法,在实际的项目开发中可以节省很多的时间.每一种排序算法在执行的效率上是存在差别的,这些微小的时间差,也许在平常的联系当中感觉不到,但是涉及到数据量比较大或者是在资源比较紧张的系统中 ...

  9. 数据结构实验报告(六)

    数据结构实验报告(六) 一.实验名称 实验六  图的实验1--图的邻接矩阵存储实现 二. 实验目的 1.  熟练理解图的相关概念: 2.  掌握图的邻接矩阵的存储方法的实现: 3.  学会图的遍历算法 ...

  10. 希尔排序python 简书_排序:希尔排序(算法)

    文 | 莫若吻 (注:如果想更好的理解希尔排序,请先看看我的上一篇博客插入排序,希望会对你有帮助.) 一.简介 希尔排序(Shell Sort)是插入排序的一种算法,是对直接插入排序的一个优化,也称缩 ...

最新文章

  1. Spring基础专题——第一章(第一个Spring程序)
  2. m个足球放入n个篮子中或者放苹果问题
  3. linux下confstr与uname函数_获取C库与内核信息
  4. 职高计算机专业可以考本科吗,职业高中和普通高中的区别 职业高中能考本科吗...
  5. GDCM:gdcm::CompositeNetworkFunctions的测试程序
  6. java中hasnext的作用_java中Scanner的hasNext()的疑问
  7. L Machining Disc Rotors
  8. Mr.J---重拾Ajax(四)-- 跨域
  9. linux删除csv换行符,从CSV保存行删除换行符(Remove linefeed from csv preserving r
  10. 提高MySQL性能的方法
  11. Java多线程包之BlockingQueue
  12. SQL Server 数据库做读写分离
  13. VC2008编译libthrift
  14. 速达5000维护服务器,财务软件速达5000为什么连不上服务器
  15. 微信小程序发布上线全流程(注册/开发/上传审核)
  16. Android Toast的几种使用方式
  17. java程序员表白代码_程序员表白代码,用过的人都找到了对象...
  18. Windows 下使用 TFTPD32+HTTP PXE引导安装linux
  19. 组装计算机必须要有显卡吗,组装电脑应该侧重CPU还是显卡
  20. 腾讯 美团 百度 网易游戏 2015校园招聘南京笔试面试之总结分析

热门文章

  1. 找出数组中任一重复的数字
  2. 携程基于云的软呼叫中心及客服平台架构实践
  3. 分库分表需要考虑的问题及方案
  4. ibatis annotations 注解方式返回刚插入的自增长主键ID的值--转
  5. 独立硬盘冗余阵列与HDFS
  6. haproxy 学习记录
  7. RuoYi(分离版) 使用代码生成器添加子模块(idea版)
  8. 能做存储的超级计算机——任宇翔和以色列团队的创业故事
  9. Java Review - 并发编程_ThreadLocalRandom实现原理源码分析
  10. Redis进阶-Jedis以及Spring Boot操作 Redis 5.x Cluster