我是否说有很多方法可以执行快速排序?
为了论证,让我们使用第一本教科书的编号:20 47 12 53 32 84 85 96 45 18
这本书说要交换18和20(在书中20代表红色,而18代表蓝色,所以我加粗了20)。
基本上,它一直移动蓝色指针,直到数字为:18 12 20 53 32 84 85 96 45 47
现在它说(这对我来说很明显),20左边的所有数字都小于,而右边的所有数字都大于,但是它从未将20命名为“枢轴”,即其他大多数资源如何谈论它。然后,正如所有其他方法所指出的那样,它会在两侧进行快速排序,然后我们得出结论(它仅涉及对列表的右半部分进行排序):
47 32 45 53 96 85 84结束。现在,从其他资源中我知道,一旦所有列表都按顺序排列,它们就会重新组合在一起。我想我理解这一点,但是一本与第二本不同的“剑桥认可”教科书经常使我感到困惑。第二个是关于通过选择中位数来找到一个枢轴。
为列表找到“枢轴”的最佳方法是什么?
教科书中提供的内容与基于数据透视的概念类似,不同之处在于他们在那儿没有提及此术语。但是,无论如何,概念是相同的。
为列表找到“枢轴”的最佳方法是什么?
没有选择关键元素的固定方法。您可以选择数组的任何元素-第一,第二,最后等。也可以为给定数组随机选择它。
但是,出于对称的原因,科学家和数学家通常谈论中位元素,它是列表的中间元素,从而减少了递归调用。
几乎显而易见,当您选择数组的第一个或最后一个元素时,将有更多的递归调用---从而更接近最坏的情况。将构造更多数量的递归调用,以分别在两个分区上执行快速排序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句