当我遇到上述声明时,我正在阅读shell排序。这意味着什么,以及它对我看待shell排序的方式有何不同?
PS:我不是在寻找声明的证据。
答案 0 :(得分:3)
好吧,你可能暗示下一个排序阶段不会“搞砸”前面的步骤:如果你对数组进行g-sort然后执行h-sorting,结果数组仍然是g-sorted,所以它是关于应用h排序“没有错”。而且由于插入排序(shellsort基于它)对于几乎有序的数组来说很快,你可以说h-sorting做了一些积极的事情(如果它改变了一些东西)并且没有造成伤害 - 这是一个很大的成本。所以它始终是一个进步:它几乎是线性的,或者在排序方面取得了一些进展。
显然,选择步骤值的问题对于shellsort来说是一个独立且非常重要的问题。
答案 1 :(得分:1)
从我能够找到的,我认为这意味着,如果数组是用步骤G排序的Shell,它将在用步骤H排序后继续用步骤G排序。这是G和H之间的重要关系,我想它对于H< G,但不要把它视为理所当然。
但如果不能访问原始文本,很难猜出它可能意味着什么。
答案 2 :(得分:0)
基本上,这只是意味着存在一些转换h,因此一旦对其应用转换h,具有g-sorted属性的列表仍然是g-sorted,使其也被h分类。
在shell排序的上下文中,我理解的是,在应用使列表g-sorted的转换之后,每个gth元素的序列都按排序顺序排列。 Te statment意味着即使将h-sort转换应用于列表,使其进行h-sorted,列表仍然具有g-sorted属性。
这一点的重要意义在于对数组进行h排序不会撤消先前的排序步骤,从而确保列表最终会被排序。
答案 3 :(得分:0)
好吧,下面的数组是5排序的,如果我们对它排序,最后的结果不再排序5。因此,如果h <= g。
,它认为上述陈述是正确的指数:[0至29],30,35,40,42
价值:[...- 1 ..],10,15,20,0
答案 4 :(得分:0)
它只是意味着,如果在执行g-sort时对两个元素进行排序,即使在对h <= g进行h分类之后,它们仍将保持排序。