为什么我们不能有就地的合并?为什么我们不能有一个稳定的快速入口?

时间:2017-03-16 12:52:53

标签: quicksort mergesort in-place stable-sort

我问的第一个问题是因为:

我们知道,我们在quicksort中传递第一个和最后一个索引,然后选择一个数据透视,然后进行分区。如果在mergesort中也在Mergesort()方法中,我们传递第一个和最后一个索引,并选择一个实际上是原始数组的索引的mid(因此我们不使用MergeSort(LeftOrRightArray),而是传递给参数MergeSort(OriginalArray,start,结束)其中start或end(表示原始数组的索引)分别是紧邻外部递归的中间+ 1或中间,而另一个起始或结束是另一端,但是是一个索引。我们选择mid作为原始数组的索引。最后我们使用Merge()方法进行原位转换。

我问第二个问题因为:

快速排序选择一个枢轴,并将其放置在合适的位置,而不管左侧或右侧的元素顺序如何。但是这里需要注意的是,在这样做时,稳定因子直到现在才“保持”。(或者我错了?)现在它在较小的左右子阵列上进行递归。假设我们选择拇指规则上的枢轴作为最右边的值(在每个子阵列中),将枢轴置于其正确位置的过程可以有一种方法这样做而不会失去稳定性。等等。 意味着它需要一个连续五个(比如说)7(在原始数组中)的一点可视化,并且它们被选为子阵列中的枢轴(前7个作为枢轴,后7个作为枢轴,或任何中间7作为枢轴) / p>

0 个答案:

没有答案