"A g-sorted array remains g-sorted even after h-sorting it"的含义是什么?



当我看到上面的语句时,我正在阅读shell排序。这意味着什么?它对我看待壳层排序的方式有什么影响?

PS:我不是在找这个命题的证明

好吧,您可能暗示下一个排序阶段不会"搞砸"前面的步骤:如果您对数组进行g排序,然后执行h排序,结果数组仍然是g排序,因此应用h排序"没有错"。由于插入排序(基于它的shellsort)对于几乎有序的数组是快速的,您可以争辩说h排序做了一些积极的事情(如果它改变了一些东西)并且没有造成那么大的损失。所以它总是一个进步:它要么接近线性,要么在排序方面取得了一些进展。

对于shellsort来说,选择步长值显然是一个单独的、非常重要的问题

从我所能找到的,我认为这意味着,如果数组是Shell排序与步骤G,它将继续排序与步骤H排序后步骤G。这是G和H之间的重要关系,我想这是真的H <,但不要把它当作理所当然。

但是在没有原始文本的情况下,很难猜测它的意思

基本上,这只是意味着存在某种转换h,使得具有g排序属性的列表在应用转换h后仍然是g排序的,使其也是h排序的。

在shell排序的上下文中,我对这个概念的理解是,在应用一个使列表g排序的转换之后,每个th元素的序列都是有序的。这句话的意思是,即使对列表应用h排序变换,使其排序为h,列表仍然具有g排序的属性。

这样做的重要意义在于,对数组进行h排序不会撤销先前的排序步骤,从而确保列表最终将被排序。

好吧,下面的数组是5排序,如果我们对它进行排序,最终结果不再是5排序了。因此,如果h <= g,它认为上述陈述是正确的。

指数:[0 ~ 29],30,35,40,42

值:[…]1 . .[0,10, 15, 20, 0]

这仅仅意味着,如果两个元素在执行g排序时进行了排序,那么即使在h排序之后(h <= g),它们仍将保持排序。

最新更新