希尔的分组究竟是如何排序的?

发布于 娱乐 2024-06-28
10个回答
  1. 匿名用户2024-01-30

    根据你的图,第一次将每6个数字分成几组,每个直线的数字至少包含在一个组中,然后按照规则从大到小(从小到大)对每组进行排序。 第二次每 3 个数字分组,并且每个正数至少包含在一个组中,并且每个组也进行排序。 最后,对每两个数字进行分组,并且每个直子的每个数字至少包含在一个组中,然后对每个组进行排序。

    结果是有序的结果。

  2. 匿名用户2024-01-29

    根据上图,排序文件中有10条记录,关键字为27 38 65 97 76 13 27 * 49 55 4增量级数的值如下:

    5,2,1。在第一次排序中,d1=5,整个文件分为5组:(27,13),(38,27*),65,49),(97,55),(76,4)每组中的第一条记录本身就是一个有序区域,我们将把每组的第二条记录翻到最后一条。

    第一次行程的结果:13 27* 49 55 4 27 38 65 97 76 在第二次行程中,d2=2,如上图所示。 第二次排序结果:

    4 27* 13 27 38 55 49 65 97 76 在最后一次排序中,d3=1 表示直接插入并排序整个文件,结果为有序文件。 结果如上,如果你不明白,你可以问我......

  3. 匿名用户2024-01-28

    Hill sort 也称为缩小增量排序,它也属于 Insertion Sort 类算法。 互相传授一般插入算法对折并插入算法2 路插入算法以及表格插入算法,希尔排序在时间效率方面更好。

    对于普通混枣通道的插入算法,时间复杂度为 ,序列排序时可以达到最佳时间复杂度。 而且,当它很小时,插入分选效率也相对较高,因为移动的元渗透元件拆卸较少。

    因此,我们可以采用分区先把整个待排序序列分成若干个子序列分别插入排序,等整个序列基本排序好,即整个序列自下而上排序时,再插入整个序列进行排序。

    注意:这里的子序列不是简单地逐个分割,而是会用一个子序列分隔增量这样在插入和排序子序列时,元素不是一步一步地移动,而是突飞猛进地移动。

    其中数组 d 是增量序列。 常用的增量序列有:

    Hill 排序是不稳定,原位。不稳定的原因是,当希尔阶的不同段互换时,相等元素的初始相对位置被打乱。

  4. 匿名用户2024-01-27

    记录按步长间隙分组,每组记录按直接插入排序。 随着步长逐链减小,该组包含的记录越来越多,当步长值减小到1时,将整个数据组合成一个组,形成有序的记录集,排序完成。 让我们通过图表仔细看看这个过程。

    山丘布置。 丘式排序又称递减增量排序算法,是在直接插入排序算法的基础上改进的,其效率肯定高于直接插入简化排序算法; Hill 排序是一种不稳定的排序算法。 希尔排序是由唐纳德·壳牌发明并于 1959 年出版的,因此得名希尔排序。

    希尔的算法。

  5. 匿名用户2024-01-26

    Hill排序的详细过程:先取一个正整数d1数组元素放在一个组中,直接将排序插入到组中; 然后取 d2 三次旅行的结果。

    山排序(shell'S sort)是一种插入排序,又称“减少增量排序”,是直接插入排序算法的一种更高效、更改进的版本。希尔排序是一种不稳定的排序算法。 该方法之所以得名,是因为它是在 1959 年提出的。

    Hill排序是将记录按目标分组成一定的增量,并使用直接插入排序算法对每组进行排序; 随着包含越来越少的增量逐渐减小,每个组包含的关键字越来越多,当增量减小到 1 时,整个文件被分成一组,算法终止。 Hill 分拣以其设计者 Hill 的名字命名,该算法在 1959 年由老 Busil 发表的“高速分拣程序”中进行了描述。

    希尔排序的利弊

    从本质上讲,Hill 排序算法是对直接插入排序算法的改进,它减少了它制作的副本数量,并且速度更快。 原因是当n值较大时,每次排序中需要移动的数据项数量非常少,但数据项的距离却很长。 当 n 值减小时,每次需要移动更多的数据,排序后接近最终位置。

    正是这两种情况的结合,使得 Hill 排序比插入排序更有效。 shell 算法的性能与所选的组长度序列有很大关系。 只有对要排序的特定记录序列,才能准确估计关键字比较的数量和对象移动的数量。

  6. 匿名用户2024-01-25

    希尔排序时间复杂度为 o(n (,空间复杂度为常阶巧妙消去 o(1)。 Hill 排序不如时间复杂度为 o(n(logn)) 的快速排序算法快,因此在中等规模尺度上表现良好,但它对于对非常大的数据进行排序并不是最佳选择,并且比具有一般 o(n2) 复杂度的算法快得多。 Shell 排序是一种插入排序,是对直接插入排序算法的改进。

    概念及其介绍:Hill 排序,也称为缩小规模的增量排序,在 1959 年提出时得名。 它通过比较彼此之间一定距离的元素来实现这一点,并且每次比较使用的距离会随着算法的进行而减小,直到只比较相邻元素的最后一个顺序。

    Hill排序是将记录按目标分组成一定的增量,并使用直接插入排序算法对每组进行排序; 随着增量孝道知识逐渐减少,每组包含的关键词越来越多,当增量减少到1时,整个文件被分成一组,算法终止。

  7. 匿名用户2024-01-24

    Hill排序算法思路:Hill排序按下标增量进行分组,每组按插入排序算法排序,随着增量的减小,每组包含的关键字越来越多,当增量减小到1时,整个序列被分成一组,算法终止。

    我们以增量阶次排序为例,Hill排序的基本步骤:选择初始增量gap=length 2,缩小增量,继续按照gap=gap 2的方式进行,直到增量gap=1,增量的每次变化都会将原序列分成几组,每组分别插入排序。

    每次按增量分割组对插入进行排序时,小数移到前面,大数移到后面,最后插入增量间隙=1排序,即为最终有序序列。

    由于多重插入排序,我们知道单个插入排序是稳定的,不会改变相同元素的相对顺序,但是在不同的插入排序过程中,相同的元素可能会在各自的插入排序中移动,最终它们的稳定性会被破坏,因此外壳排序是不稳定的。

    历史

    Hill Volge Sorting 以其设计者 Donald Shell 的名字命名,该算法在 Hill 1959 年出版的《A High-Speed Sorting Procedure》一书中进行了描述。

    1961 年,IBM 的女程序员 Marlene Metzner Norton 首次使用 Fortran 语言实现了 Hill 排序算法。 程序中采用一种简单有效的方法来设置Hill排序所需的增量序列:第一个扩展器是待排序记录数的一半,然后逐个减半,最后一个增量为1。

    该算法后来被称为shell-Metzner算法,Metzner本人在2003年的一封电子邮件中说:“我没有为这个算法做任何事情,我的名字不应该出现在算法的名称中。 ”

  8. 匿名用户2024-01-23

    山丘排序时间复杂度是 o(n (,空间复杂度为常数阶 o(1)。 希尔排序没有时间复杂度为 o(n(logn)) 的快速排序模霍尔方法。

    速度快,因此在中等规模上表现良好,但对非常大的数据进行排序并不是最佳的,并且通常比具有一般 o(n2) 复杂度的算法快得多。 Shell 排序

    是一种插入排序,是对直接插入排序算法的改进。

    概念及其粗略性质的介绍:Hill Paidan,也称为 Reduced Incremental Order,因其于 1959 年推出而得名。 它通过以一定的间隔比较元素来实现这一点,并且用于每次比较的距离会随着算法的进行而减小,直到只比较相邻元素的最后一个顺序。

    Hill排序是将记录按目标分组成一定的增量,并使用直接插入排序算法对每组进行排序; 随着增量的减小,每个组包含的关键字越来越多,当增量减小到 1 时,整个文件被分组并终止算法。

  9. 匿名用户2024-01-22

    Hill 排序的基本思想是以小于 n 的整数 d1 作为第一个增量,并将文件的所有记录划分为 d1 组。 具有 d1 倍数的独占距离的记录被放置在同一组中。

    首先,在每组内进行直接插入分拣; 然后,以第二个增量 d2 为例:

    对于这样的无序数组 5 9 3 2 6 11 8 1 7 4 10 并希望将其转换为递增数组 1 2 3 4 5 6 7 8 9 10 11。 一次取 3 个元素:取出 5 2 8 4,揉回一个,取出 9 6 1 10,再揉一个,取出 3 11 7。

    所以我们得到了第一次旅行的结果:2 1 3 4 6 7 5 9 11 8 10现在以 2 个间隔重复上述步骤(这次是两组),得到 2 1 3 4 5 7 6 8 11 9 10。

    最后,每隔 1 次再做一次(其实这一步就是从左到右比较,调整位置),就得到了想要的结果。

    这就是希尔排序,其本质是先做宏观调整,再做微观调整。

  10. 匿名用户2024-01-21

    基本思想。

    取一个小于 n 的整数 d1 作为第一个增量,将文件的所有记录分成组。 距离为 d1 的倍数的所有记录都放在同一组中。 首先,在每组内进行直接插入分拣; 然后,取第二个增量 d20&&r[0]。

    key0)#endif

    if 0 算法 2

    int j;

    for(j = i - k;j>=0 &&t < a[j];j -= k)

    a[j + k] = a[j];

    a[j + k] = t;

    #endif

    如果 0 算法 3

    int j;

    for(j = i;j >= k &&t < a[j - k];j -= k)

    a[j] = a[j - k];

    a[j] = t;

    #endif

    算法 4int j = i;

    while(j >= k &&t < a[j - k])

    a[j] = t;

    k /= 2;}}

    int main()

    shellsort(a,sizeof(a)/sizeof(a[0]))

    for(int k = 0;k < n;k++)

    printf("a[%d] = %d",k,a[k]);

    return 0;

    c++void shellsort(int a, int n)

    a[j + d] = temp;}}

相关回答
8个回答2024-06-28

支付宝提现免费方式:

芝麻信用本质上是一种信用评分模型,国际公认的FICO评分模型主要关注五类因素:信用还款历史、信用账户数量、信用年限、在用信用类型、新开信用账户,以及信用卡额度、房地产情况、违约记录、 等。 >>>More

33个回答2024-06-28

其实,真正相爱到为对方而死还是很少见的,但至少可以为对方做很多事情,哪怕不容易完成。

12个回答2024-06-28

天地黄,宇宙荒凉(如天一、天二、地一、地二)。 >>>More

13个回答2024-06-28

我同意一楼的说法,如果你的月经周期规律,你的排卵日应该在8月10日左右(排卵期在下一次月经前14天),而第二次月经刚刚结束,3号左右,不会进入排卵期,所以你的孩子应该是你丈夫的。 >>>More

24个回答2024-06-28

鼻炎的症状有很多种,根据鼻炎的类型不同,鼻炎的症状也不同,鼻炎的症状主要包括鼻塞、流鼻涕、打喷嚏、头痛、头晕等,但只有这些鼻炎症状并不能诊断出鼻炎,还要依靠耳鼻喉科医生进行详细的检查,鼻炎有各种类型的鼻炎在耳鼻喉科的专题中, 但仅供参考,因为你觉得是鼻炎,其实可能是鼻息肉、鼻中隔曲率、鼻窦炎甚至恶性肿瘤。如果您怀疑自己患有鼻炎,您可能需要先去看耳鼻喉科医生。 >>>More