#include <stdio.h>
void shellSort(int, int);
main()
{
/*这里有一点需要注意,C语言中,任何的变量声明语句必须放在最前面
即使是放在printf语句之后也不行,下面的两行语句若写成:
printf("Enter the number: \n");
int i, j, a[10];
编译将会不通过!*/
int i, j, a[10];
printf("Enter the number: \n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
shellSort(a,10);
printf("The sorted array is:\n");
for(j=0;j<10;j++)
{
printf("%d\n",a[j]);
}
}
void shellSort(int a[], int n)
{
int gap, i, j, temp;
/*控制两个被比较元素之间的距离gap,从n/2开始,逐步进行对折,直到为0*/
for(gap=n/2;gap>0;gap/=2)
{
/*用于在元素间移动位置*/
for(i=gap;i<n;i++)
{
//比较各对相距gap个位置的元素,当这两个元素逆序时,互换*/
//由于gap的值最终要递减到1,因此所有元素最终都会位于正确的排序位置上*/
for(j=i-gap;j>=0&&a[j]>a[j+gap];j-=gap)
{
temp = a[j];
a[j] = a[j+gap];
a[j+gap]=temp;
}
}
}
}相关推荐
【大唐杯学习超快速入门】5G技术原理仿真教学——5G网络开通调测与车联网
自用笔记,比较乱。
希尔排序(Shell sort algorithm)
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录"基本有序"时,再对全体记录进行依次直接插入排序。选择一个增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1;按增量序列个数 k,对序列进行 k 趟排序;每趟排序,根据对应的增量 ti,将待排序列分割成若干长度为 m 的子序列,分别对各子表
使用sysbench对Oracle做基准测试(-) 安装篇
sysbench是一款开源的多线程性能测试工具, 可以执行CPU/内存/线程/IO/数据库等方面的性能测试。数据库目前支持MySQL/Oracle/PostgreSQL。
sort algorithm
十大经典排序算法(动图演示) 0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。 线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。 0.2 算法复杂...
论文笔记--Spatial-Temporal Fusion Graph Neural Networks for Traffic Flow Forecasting
Summary 在交通预测问题上,现有的框架通常利用给定的空间邻接图和复杂的机制来建模空间和时间关联。作者认为使用给定的空间邻接图会限制模型的有效时空相关性学习,并且它们通常使用单独的模块来实现空间和时间相关性,或者只使用独立的组件来捕获局部或全局的异质依赖关系,割裂了时空依赖关系。为此作者提出一种时空融合图神经网络用于交通预测。提出一种数据驱动的“时间图”生成方法,以此来补偿空间图可能没有反映的相关性。提出一种新的交通预测方法。 Problem Definition 交通预测中的挑战 以上图为
truetime2.0使用说明
truetime2.0使用说明1.1 truetime2.0工具箱的下载与安装1.2 truetime2.0工具箱的配置1.3 truetime2.0各模块的说明 注意,以下出现的地址本电脑MATLAB安装路径,请注意自己的MATLAB安装路径 1.1 truetime2.0工具箱的下载与安装 步骤1)没有工具箱的朋友可以 在可以在这个网站上免费申请下载http://www.control.lth.se/truetime/,里面有最新的版本。我用的是TrueTime 2.0 beta 1 步骤2)将
linux sort 算法_十大算法排序(Sorting Algorithm) Study notes
(自己手打的python实现代码以及整理的各路大神总结的知识点)自用学习笔记,由于基于北美cs学习,文章大量中英混杂(谨慎食用)十大排序算法:插入排序1)Insertion Sort 简单插入排序:2)Shell sort(希尔排序):突破n^2交换排序3)Bubble sort:两两比较4)Quicksort选择排序5)Selection Sort选择排序:选出最小的6)Heap sort (堆...
电赛控制组入门到实战:从电路板到PID算法的完整路径
本文详细介绍了电赛控制组从电路板制作到PID算法实战的完整学习路径。涵盖嘉立创电路设计、Keil5开发环境搭建、STM32F103C8T6核心板外设应用,重点解析PID算法在电机速度环与位置环中的调试技巧,并探讨OpenMV视觉模块与主控制器的协同工作,为电赛参赛者提供系统化的实战指南。
Algorithm - Shell Sort(Java)
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net package chimomo.learning.java.algorithm.sort; import java.util.Arrays; /** * @author Chimomo * * <p> * Introduc...
mmsegmentation教程1:自定义数据集、config文件修改、训练教程
mmseg使用教程
CONN工具箱分析fmri数据笔记1
前言一、安装二、预处理三、去噪 前言 CONN:functional connectivity toolbox,是基于MATLAB和SPM的一个对功能磁共振数据进行分析的一个工具箱。可以进行以下分析: Seed-based correlations (SBC), ROI-to-ROI correlations, graph analyses, Independent component analyses(group-ICA), Masked (ICA) Amplitude of Low-Frequency.
shell(希尔)排序算法
shell排序是插入排序(插入排序:https://blog.youkuaiyun.com/mars_xiaolei/article/details/77334970)的优化。 在待排序的元素数据量较大时,如果一个序列已经基本有序(序列中小数普遍位于大数的前面),那么我们在插入排序的时候,就可以在较少的比较操作之后使整体有序。shell排序会在插入排序操作之前尽量将待排数组变为基本有序的数组。 先取一个小于n...
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
CSharp Algorithm - Shell sort
CSharp Algorithm - Shell sort
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开
Sorting Algorithm-Shell Sort
Shell Sort-希尔排序 Algorithm: 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 Ex: 49,38,65,97,76,13,27,49,55,04 第一次:步长为5 第一组:49,13 第二组:38,27 第三组:65,49 第四组
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
【Algorithm Part 1·Princeton】week2-2 Selection Sort选择排序、Insertion sort插入排序、Shell sort希尔排序
Introduction callback 回调函数 int N = Integer.parseInt(args[0]); Double[] a = new Double[N]; for (int i = 0; i < N; i++) a[i] = StdRandom.uniform(); Insertion.sort(a); String[] a = In.readStrings(args[0]); Insertion.sort(a); File directory = new File(arg
7-2 Shell Sort
在这里给出相应的输出。在这里给出一组输入。
希尔排序 shell sort
void shellSort(int numbers[], int array_size) { int i, j, increment, temp; increment = 4; while (increment > 0) { for (i=0; i < array_size; i++) { j = i; temp = numbers[i]
算法之希尔排序(Shell Sort)
希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。 希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。 它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。 希尔排序是把记录按下表的一定增量分组,对每组使用直接插入排序算法排序; 随着增量逐渐减少,每...
基础数据结构和算法四:Shell sort
Shellsort is a simple extension of insertion sort that gains speed by allowing exchanges of array entries that are far apart, to produce partially sorted arrays that can be efficiently sorted, ev...
算法基础篇-07-排序-希尔排序(Shell Sort)
希尔排序
常用排序算法—Shell Sort(希尔排序)
Shell sort works by comparing elements that are distant rather than adjacent elements in an array or list where adjacent elements are compared. Shellsort uses an increment sequence. The increment size...
Algs4 - Stack, Queues & Elementary Sorting,堆,栈,初级排序
文章目录Stack, Queues & Elementary SortingStack & QueuesGenerics and IteratorElementary Sort algorithmsSort Applications Stack, Queues & Elementary Sorting Stack & Queues Resizing Arrays,...
Review of Algorithm (HITSZ) 含22年真题回忆
HITSZ硕士算法复习(含22年真题回忆)
js 实现排序算法 -- 希尔排序(Shell Sort)
原文: 十大经典排序算法(动图演示) 希尔排序 1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。 算法描述: 将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,具体算法描述: 选择一个增量序列t1,t2,…,tk,其中t1...
shell排序
但是这个增量确实有它的意义,不管数列有多长,刚开始时增量会很大,所以每一组待排序的数列的规模会很小,排序会很快。在希尔排序中会进行分组、排序,所以同样值的元素,其相对位置有可能会发生变化,这是因为同样值的元素若不在一个组中,则有可能后面的元素会被移动到前面。当然,希尔排序的时间复杂度与其增量序列有关,我们知道,一般来说希尔排序会比插入排序快一些,这就足够了。在希尔排序的实现中仍然使用了插入排序,只是进行了分组,并没有使用其他空间,所以希尔排序的空间复杂度同样是 O(1),是常量级的。其他的还有质数法等。
shell排序算法
经典的写法,今天刚学的。 有点难懂。 #include using namespace std; int main() { int nums[10] = {49, 38, 65, 97, 26, 13, 27, 49, 55, 4}; for(int cut = 10/2;cut > 0;cut /= 2) for(int m = 0;m < cut;m+
1万+



被折叠的 条评论
为什么被折叠?



