TZC 1283: 简单排序 —— 希尔排序
我们以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: 简单排序 —— 希尔排序相关推荐
- 算法---排序--希尔排序和快速排序
冒泡.选择.插入排序算法是三种简单的排序算法,它们的时间复杂度大O表示法都是O(N2),如果数据量少,我们还能忍受,但是数据量大,那么这三种简单的排序所需要的时间则是我们所不能接受的.接着我们在讲解递 ...
- 排序---希尔排序实现和性能分析
希尔排序 希尔排序是简单插入排序的改进,直接插入排序的最坏情况时间复杂度达到O(n^2),比如从大到小的一串数字654321,使用插入排序从小到大进行排序,这就达到插入排序的最坏情况. 希尔排序是把记 ...
- 【每天学一点 - 算法篇 - 排序 - 希尔排序】
系列文章目录 [每天学一点 - 算法篇 - 排序 - 插入排序] 文章目录 系列文章目录 前言 一.什么是希尔排序 二.原理 1.思路 2.示例 3.抽象 三.代码 四.复杂度 总结 前言 小时候听蛋 ...
- 【数据结构-排序】1. 图解插入排序三种实现(插入排序/折半排序/希尔排序)
直接插入排序(插入排序) 排序思想 对于一个数组 A[0,n] 的排序问题,假设认为数组在 A[0,n-1] 排序的问题已经解决了. 考虑 A[n] 的值,从右向左扫描有序数组 A[0,n-1] ,直 ...
- 数据结构之内部排序--希尔排序
概要 -IDE:Pycharm -Python版本:python3.x -算法分类:内部排序->插入类排序->希尔排序 算法思想 希尔排序又称缩小增量排序法,是一种基于插入思想的排序方法. ...
- TZC 1283: 简单排序 —— 归并排序
我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.归并排序原理请参见:https://www.jianshu.com/p/33cffa1ce613 或 ...
- TZC 1283: 简单排序 —— 快速排序
我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.快速排序原理请参见:https://www.runoob.com/w3cnote/quick-sor ...
- TZC 1283: 简单排序 —— 堆排序
我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.堆排序原理请参见:https://blog.csdn.net/u010452388/article/ ...
- TZC 1283: 简单排序 —— 插入排序
我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法.冒泡排序原理请参见:https://zhuanlan.zhihu.com/p/122293204 或 ...
最新文章
- SQL Server 复制需要有实际的服务器名称才能连接到服务器
- AMD VS 英特尔:芯片制造实力似乎正在发生逆转!
- python主程序流程图_python中的图形渲染(流程图可视化)
- linux日志汇总,Linux日志分析常用命令汇总(示例代码)
- 菜鸟学前端之遍寻名师之混乱的笔记
- 微信公众平台JSSDK开发
- java中延迟任务的处理方式
- JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象
- 11GR DATAGRUAD环境BROKER配置Fast-Start Failover
- linux安装python和pip3,Linux安装python3.6 和pip
- Android中从源码分析关于AsyncTask的使用
- springboot租房管理系统答辩PPT模板
- python json转换与处理
- 安全控件开发原理分析 支付宝安全控件开发 网银密码控件 C++
- HTML 静态网页制作Web 金州勇士队 库里 库里三分王 JavaScript CSS 图片轮播 时间效果 注册界面等
- Linux下的经典软件-史上最全
- EtherCAT网线选型标准
- 安卓/苹果/支付宝sdk拉起支付宝h5/app支付
- Jupyter Notebook基础(6)Jupyter Notebook命令行命令帮助
- 键盘输入突然混乱,敲击字母或空格,变为打开菜单栏的项目
热门文章
- autoCAD 控制应用程序窗口 和 图形窗口
- linux上hosts文件如何配置
- 计算机中临时存储数据指令的部件,粤高教版初中信息技术七年级上册1.2一睹它的真容 课件.pptx...
- qq服务器运行失败,QQ连接服务器超时,请重试,错误码0x00000001解决方法分享
- 学长在黑马「既脱贫又脱单」,他是如何“俘获”学姐的芳心的?
- php浮动边框设置属性,CSS float 浮动属性
- 有信牵手高德 为1亿用户提供LBS通讯服务
- ABAP的一些命令处理(CHECK、STOP、EXIT、continue、return、reject)
- 网购秒杀系统案例分析
- C++实现英文字母菱形输出