我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法。希尔排序原理请参见:https://www.cnblogs.com/chengxiao/p/6104371.html 或 https://www.runoob.com/w3cnote/shell-sort.html

原题链接:1283: 简单排序

python代码如下:

import math# 希尔排序
def shell_sort(arr):gap = 1while gap < len(arr) / 3:gap = gap * 3 + 1while gap > 0:for a in range(gap, len(arr)):tmp = arr[a]b = a - gapwhile b >= 0 and arr[b] > tmp:arr[b + gap] = arr[b]b -= gaparr[b + gap] = tmpgap = math.floor(gap / 3)return arrT = int(input())
for i in range(T):s = input().split()lt = [int(x) for x in s]lt1 = lt[::-1]lt1.pop()n = len(lt1)shell_sort(lt1)for j in range(n):if j != n - 1:print(lt1[j], end=' ')else:print(lt1[j])

C语言代码如下:

#include <stdio.h>
#include <string.h>
#define N 1010
void shell_sort(int arr[], int len) //希尔排序
{int gap, i, j;int temp;for(gap=len/2; gap>0; gap/=2)for(i=gap; i<len; i++){temp=arr[i];for(j=i-gap; j>=0 && arr[j]>temp; j-=gap)arr[j+gap]=arr[j];arr[j+gap]=temp;}
}
int main()
{int m,n,i,j,t,a[N]={0};scanf("%d",&m);while(m--){scanf("%d",&n);memset(a,0,n);        //初始化数组for(i=0;i<=n-1;i++)       //输入scanf("%d",&a[i]);shell_sort(a,n);for(i=0;i<=n-1;i++)      //输出 {if(i!=n-1)printf("%d ",a[i]);elseprintf("%d\n",a[i]);}}return 0;
}

TZC 1283: 简单排序 —— 希尔排序相关推荐

  1. 算法---排序--希尔排序和快速排序

    冒泡.选择.插入排序算法是三种简单的排序算法,它们的时间复杂度大O表示法都是O(N2),如果数据量少,我们还能忍受,但是数据量大,那么这三种简单的排序所需要的时间则是我们所不能接受的.接着我们在讲解递 ...

  2. 排序---希尔排序实现和性能分析

    希尔排序 希尔排序是简单插入排序的改进,直接插入排序的最坏情况时间复杂度达到O(n^2),比如从大到小的一串数字654321,使用插入排序从小到大进行排序,这就达到插入排序的最坏情况. 希尔排序是把记 ...

  3. 【每天学一点 - 算法篇 - 排序 - 希尔排序】

    系列文章目录 [每天学一点 - 算法篇 - 排序 - 插入排序] 文章目录 系列文章目录 前言 一.什么是希尔排序 二.原理 1.思路 2.示例 3.抽象 三.代码 四.复杂度 总结 前言 小时候听蛋 ...

  4. 【数据结构-排序】1. 图解插入排序三种实现(插入排序/折半排序/希尔排序)

    直接插入排序(插入排序) 排序思想 对于一个数组 A[0,n] 的排序问题,假设认为数组在 A[0,n-1] 排序的问题已经解决了. 考虑 A[n] 的值,从右向左扫描有序数组 A[0,n-1] ,直 ...

  5. 数据结构之内部排序--希尔排序

    概要 -IDE:Pycharm -Python版本:python3.x -算法分类:内部排序->插入类排序->希尔排序 算法思想 希尔排序又称缩小增量排序法,是一种基于插入思想的排序方法. ...

  6. TZC 1283: 简单排序 —— 归并排序

    我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.归并排序原理请参见:https://www.jianshu.com/p/33cffa1ce613 或 ...

  7. TZC 1283: 简单排序 —— 快速排序

    我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.快速排序原理请参见:https://www.runoob.com/w3cnote/quick-sor ...

  8. TZC 1283: 简单排序 —— 堆排序

    我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.堆排序原理请参见:https://blog.csdn.net/u010452388/article/ ...

  9. TZC 1283: 简单排序 —— 插入排序

    我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.冒泡排序原理请参见:https://zhuanlan.zhihu.com/p/122293204 或 ...

最新文章

  1. SQL Server 复制需要有实际的服务器名称才能连接到服务器
  2. AMD VS 英特尔:芯片制造实力似乎正在发生逆转!
  3. python主程序流程图_python中的图形渲染(流程图可视化)
  4. linux日志汇总,Linux日志分析常用命令汇总(示例代码)
  5. 菜鸟学前端之遍寻名师之混乱的笔记
  6. 微信公众平台JSSDK开发
  7. java中延迟任务的处理方式
  8. JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象
  9. 11GR DATAGRUAD环境BROKER配置Fast-Start Failover
  10. linux安装python和pip3,Linux安装python3.6 和pip
  11. Android中从源码分析关于AsyncTask的使用
  12. springboot租房管理系统答辩PPT模板
  13. python json转换与处理
  14. 安全控件开发原理分析 支付宝安全控件开发 网银密码控件 C++
  15. HTML 静态网页制作Web 金州勇士队 库里 库里三分王 JavaScript CSS 图片轮播 时间效果 注册界面等
  16. Linux下的经典软件-史上最全
  17. EtherCAT网线选型标准
  18. 安卓/苹果/支付宝sdk拉起支付宝h5/app支付
  19. Jupyter Notebook基础(6)Jupyter Notebook命令行命令帮助
  20. 键盘输入突然混乱,敲击字母或空格,变为打开菜单栏的项目

热门文章

  1. autoCAD 控制应用程序窗口 和 图形窗口
  2. linux上hosts文件如何配置
  3. 计算机中临时存储数据指令的部件,粤高教版初中信息技术七年级上册1.2一睹它的真容 课件.pptx...
  4. qq服务器运行失败,QQ连接服务器超时,请重试,错误码0x00000001解决方法分享
  5. 学长在黑马「既脱贫又脱单」,他是如何“俘获”学姐的芳心的?
  6. php浮动边框设置属性,CSS float 浮动属性
  7. 有信牵手高德 为1亿用户提供LBS通讯服务
  8. ABAP的一些命令处理(CHECK、STOP、EXIT、continue、return、reject)
  9. 网购秒杀系统案例分析
  10. C++实现英文字母菱形输出